Всегда держать фокус на последнем сообщении на экране чата - PullRequest
0 голосов
/ 17 октября 2018

Я работаю над приложением чата.Я сталкиваюсь с проблемой сохранения фокуса на последнем сообщении чата, в случае, когда пользователь нажимает на текстовое поле редактирования и появляется клавиатура.Что происходит сейчас, когда клавиатура всплывает, мне приходится прокручивать экран чата, чтобы увидеть последнее сообщение.В идеале, я должен видеть последнее сообщение в фокусе без прокрутки, независимо от того, выдвинута клавиатура или нет.Как показано на скриншотах, скриншот 1 - это экран чата, где «Привет» - последнее сообщение.На втором снимке экрана, когда я нажимаю на редактировать текст, чтобы запустить клавиатуру, в качестве последнего сообщения отображается «s», и мне нужно прокрутить вниз, чтобы увидеть последнее сообщение.На самом деле «Привет» должен отображаться как последнее сообщение.У кого-нибудь есть решение для этого?Я использовал режим windowssoftinput как 'AdjustResize', но он не работает

enter image description here

enter image description here

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Если вы используете менеджер линейной компоновки с утилитой просмотра, вы можете установить recyclerView.setStackFromEnd(true).Это установит вид для отображения последнего элемента, направление макета останется прежним.

0 голосов
/ 17 октября 2018

Используйте следующий код для этого ... у меня это сработало ...

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 (mRecyclerView != null)
            {
                if (bottom < oldBottom)
                { 
                    mRecyclerView.smoothScrollToPosition(mRecyclerAdapter.getItemCount() - 1);
                }
            }
        }
    });
...