Android: смещение клавиатуры приводит к прокрутке вниз

Я использую ViewPager для отображения двух фрагментов в виде страниц в моем приложении. На странице 1 есть поля EditText. Я хочу программно отклонить клавиатуру, связанную с любым из этих текстовых полей (на странице 1), когда я прокручиваю до страницы 2 (или выбираю Tab2). Я написал следующий код для этого:

mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {


        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            View currentView = getCurrentFocus();
            if (currentView != null) {

                InputMethodManager imm = (InputMethodManager)  currentView.getContext().getSystemService(Activity.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(currentView.getWindowToken(), 0);
            }

        } });

Если клавиатура видна в то время как на странице 1, нажатие на вторую вкладку приведет к тому, что страница 2 отобразится в состоянии "прокрутка вниз". Это заставляет Панель инструментов подниматься вверх по строке состояния, делая заголовок Панели инструментов почти невидимым для чтения. Пожалуйста, проверьте скриншоты ниже (1-е изображение - страница 1, а второе - страница 2):

Страница 1 Страница 2

Как это исправить?

1 ответ

Попробуйте это работает

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                switch ((actionId))
                {
                    case EditorInfo.IME_NULL:break;
                }
                return false;
            }
        });

и позвонить editText.onEditorAction(EditorInfo.IME_NULL);

Другие вопросы по тегам