Android: Recyclerview не изменяет размер, когда появляется клавиатура softinput

У меня есть активность, которая содержит фрагмент, а фрагмент содержит пользовательское представление. 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);
}

Ответ 1

Не делайте ничего в файле манифеста. Просто используйте

((LinearLayoutManager)recyclerView.getLayoutManager()).setStackFromEnd(true);

Это позаботится об изменении размера recyclerview.