Перевод RecyclerView в нижнее положение при открытии клавиатуры

427
26 ноября 2016, 19:16

Здравствуйте.

Есть Layout в котором находится RecyclerView и Footer, привязанный к нижней части экрана. Сама разметка:

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
    android:id="@+id/listChat"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:scrollbars="vertical"
    android:overScrollMode="never"
    android:layout_above="@+id/listFooter"/>
<LinearLayout
    android:id="@+id/listFooter"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:orientation="horizontal">
    <EditText
        android:id="@+id/messageInput"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:inputType="textShortMessage"
        android:lines="1"
        android:singleLine="true"
        android:hint="Введите сообщение"/>
    <ImageButton
        android:id="@+id/sendButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@android:drawable/ic_menu_send" />
</LinearLayout>

В манифесте:

<activity
        android:name=".MessagingActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:windowSoftInputMode="adjustResize" />

Проблема заключается в том, что я не могу перевести RecyclerView в нижнее состояние при открытии клавиатуры. Т.е. его положение остается таким же, каким было до открытия клавиатуры. До этого тут был ListView и все работало нормально.

Если наглядно, то выглядит изначально все выглядит так:

При нажатии на EditText сейчас выглядит так:

Но нужно, чтобы выглядело так:

Пробовал ставить onClickListener на EditText и с задержкой вызывать

recyclerView.scrollToPosition(chatRecyclerAdapter.getItemCount() - 1);

Но срабатывает оно через раз. Пробовал также менять различные атрибуты у RecyclerView, но успеха не принесло. Возможно, кто-то знает, как это реализовать.

Заранее благодарю за ответ.

Answer 1

Скорее всего поможет изменение в манифесте для активити adjustResize на adjustPan

READ ALSO
Spring boot. Не обрабатывается JSP

Spring boot. Не обрабатывается JSP

Код контроллера:

385
Почему пишет отказано в доступе?

Почему пишет отказано в доступе?

Добрый день, при попытке выгрузить из ресурсов в системный диск C:\

713
Json array + object mapper

Json array + object mapper

Имеем json

389
Трансляция с камеры в WebView

Трансляция с камеры в WebView

Задача: надо сделать отображение камеры в webviewЧто пришло на ум: использовать MediaRecorder для записи видео в сокет

288