У меня есть активность, которая содержит фрагмент, а фрагмент содержит пользовательское представление. Customview содержит edittext и непосредственно под ним recyclerview с высотой match_parent. Когда пользователь получает фокус на edittext, появляется клавиатура softinput. К сожалению, эта клавиатура скрывает половину ресайклинга под ней. Я хочу, чтобы recyclerview изменил размер до оставшейся видимой высоты экрана (под edittext), чтобы элементы в списке не были скрыты с клавиатуры.
Я пробовал настройку adjustizeize для активности в манифесте, но он не имеет эффекта:
android:windowSoftInputMode="adjustResize"
Я пробовал настроить тему приложения на базовую тему (в случае, если что-то в моей пользовательской теме вызвало проблему) - никакого эффекта:
android:theme="@style/Theme.AppCompat.NoActionBar"
Я проверил, чтобы не было каких-либо фреймейдов в иерархии для представления, которое должно быть изменено (я прочитал поток SO, что это может быть проблемой) - их нет.
Я проверил активность, фрагмент, пользовательское представление и каждый подключенный адаптер, чтобы убедиться, что я не вызываю getWindow нигде (я не).
Пользовательское представление накачивается во время выполнения из viewstub. Может ли это иметь соединение?
Изменить:
содержимое родителя:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/parent_root"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
...
<ViewStub
android:id="@+id/viewstub_outername"
android:layout="@layout/viewstub_thatIneed"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</RelativeLayout>
содержимое viewstub:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/viewstub_root"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:background="@android:color/white"
>
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="20dp"
android:visibility="invisible"
/>
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="20dp"
android:visibility="invisible"
/>
</RelativeLayout>
Отображение клавиатуры таким образом:
public static void showSoftKeyboard(Activity activity) {
View view = activity.getCurrentFocus();
InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);
}