Android: вид Recycler не прокручивается до последней позиции
Я пытаюсь создать экран чата, используя вид Recycler. Из-за чата, когда пользователь выходит на экран, список должен прокручиваться до последней позиции.
Моя проблема в том, что при открытии клавиатуры список скрывается. Если мы используем настройку панорамирования, весь вид идет вверх, я пытаюсь прокрутить только список, я хочу, чтобы строка заголовка оставалась той же позиции, когда клавиатура открыта
3 ответа
Решение
Добавьте это к своему коду и проверьте.... У меня работает нормально....
mRecyclerView.addOnLayoutChangeListener(new View.OnLayoutChangeListener()
{
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom)
{
if (mRecyclerAdapter != null)
{
if (bottom < oldBottom)
{
mRecyclerView.smoothScrollToPosition(mRecyclerAdapter.getItemCount() - 1);
}
}
}
});
Добавьте эту строку, когда вы получите новое сообщение....
mRecyclerView.smoothScrollToPosition(mRecyclerAdapter.getItemCount() - 1);
Не нужно добавлять android:windowSoftInputMode в манифест. Просто держите свой вид переработчика над видом снизу. Надеюсь, это будет полезно.
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
</RelativeLayout>
<RelativeLayout
android:id="@+id/rlBottom"
android:layout_width="match_parent"
android:layout_height="46dp"
android:layout_gravity="bottom"
android:layout_margin="@dimen/dimen_8"
android:background="@drawable/shape_write_msg"
android:elevation="@dimen/dimen_2">
<EditText
android:id="@+id/etMessage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginEnd="@dimen/dimen_12"
android:layout_marginStart="@dimen/dimen_12"
android:layout_toEndOf="@+id/ivAdd"
android:layout_toStartOf="@+id/ivSend"
android:background="@color/white"
android:focusable="true"
android:hint="@string/label_type_here"
android:inputType="textCapSentences"
android:textColor="@color/black"
android:textCursorDrawable="@null"
android:textSize="@dimen/sp_12"
android:visibility="visible" />
<ImageView
android:id="@+id/ivSend"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="@dimen/dimen_4"
android:padding="@dimen/dimen_8"
android:src="@drawable/drawable_send"
android:visibility="visible" />
</RelativeLayout>
</android.support.v7.widget.CardView>
</RelativeLayout>
</android.support.design.widget.CoordinatorLayout>
`
Добавьте этот атрибут в тег активности в манифесте.
<activity
...
android:windowSoftInputMode="stateVisible|adjustResize|adjustPan"
...
</activity>