Как программно прокрутить просмотрщик через клавиатуру? - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть recyclerview, в котором есть текст для редактирования, где он будет скрыт и открывается при нажатии какой-либо кнопки. Пожалуйста, обратитесь к screen 1.

При нажатии на отклонить или принять вид отображается:

on click of reject or accept the view is displayed

Теперь, мой recyclerview расширяется вниз, но я хочу, чтобы он расширялся вверх так:

По умолчанию расширяется вниз:

by default, it expands downward

Я хочу, чтобы это расширилось вверх, вот так:

I want it to expand upward like this

Точно так же, когда клавиатура открывается, я хочу, чтобы вся ячейка recyclerview находилась чуть выше клавиатуры, вот так.

По умолчанию он не двигается вверх:

by default, it does not move upward

Я хочу что-то вроде этого:

I want something like this

Каким должен быть подход к этой функциональности?
Нужно ли делать вычисления высоты ячейки, высоты клавиатуры или есть какой-то другой метод для этого.

Пожалуйста, приложите соответствующие ссылки.
Спасибо

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Я написал это для моего класса чата, вы можете переписать этот фрагмент кода в соответствии с вашим.

private boolean keyboardShown(View rootView) {

    final int softKeyboardHeight = 100;
    Rect r = new Rect();
    rootView.getWindowVisibleDisplayFrame(r);
    DisplayMetrics dm = rootView.getResources().getDisplayMetrics();
    int heightDiff = rootView.getBottom() - r.bottom;
    return heightDiff > softKeyboardHeight * dm.density;
}

messageEditText.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            if (keyboardShown(messageEditText.getRootView())) {
                Log.d("keyboard", "keyboard UP");

                if (keyboardUp == false) {
                    if (results.size() > 0)
                        chatList.smoothScrollToPosition(results.size()+1);
                    keyboardUp = true;
                }

            } else {
                Log.d("keyboard", "keyboard Down");
                keyboardUp = false;
            }
        }
    });
0 голосов
/ 19 ноября 2018

Давайте разделим вопрос на два, прокрутите вниз RecyclerView и покажите ячейку, когда отображается клавиатура.

  1. просто используйте scrollToPosition(index) с индексом ячейки

  2. Вы можете просто изменить android: windowSoftInputMode, чтобы настроить его в действии:

    <activity
    android:windowSoftInputMode="adjustResize"
    android:name=".MainActivity"
    android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
    
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    

или просто во фрагменте:

        window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)
...