Мягкая клавиатура всплывает и медленно прячется во фрагментах, что делает набор текста медленным

Я использую [SlidingMenu][1] в моем приложении. Я использую Viewpager, чтобы показать три фрагмента во вкладках во фрагменте. Три фрагмента имеют EditTexts внутри LinearLayouts которые находятся в ScrollView, Итак, мой XML XMl выглядит так:

RelativeLayout>ScrollView>LinearLayout>EditText,

После того, как фокус меняется на каждый EditTextнабор текста начинается очень медленно (на ответ требуется 1-2 секунды). Я думал, что это из-за мягкой клавиатуры, которая пытается изменить размер или панорамировать каждый раз. Поэтому я перепробовал все возможные значения для windowSoftInputMode. Ничего не работает Я использовал тот же XML в Activity, где набор текста очень плавный. Кроме того, после набора текста (когда пользователь нажимает кнопку "Готово"), скрытие клавиатуры происходит очень медленно (занимает 3 секунды). В чем может быть проблема? и какой обходной путь, чтобы избежать?

Кстати, у меня нет никаких TextWatchers набор для EditTexts,

Редактировать:

Когда я удаляю EditTexts из двух других фрагментов, это гладко. Но только тогда, когда все три фрагмента EditTextsвялый.

1 ответ

Решение

Я избежал этого, добавив android:windowSoftInputMode="adjustNothing" который не изменяет размеры и не прокручивает. И добавил слушателей Фокуса для редактирования текстов, которые находятся в нижней части экрана, чтобы они были видны пользователям при наборе текста.

editText.setOnFocusChangeListener(new OnFocusChangeListener() {

            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {
                    scroll.scrollTo(rootView.getWidth(), rootView.getHeight()); //rootView is my parentView of the fragment
                }

            }
        });

Однако, если кто-то знает элегантное решение, пожалуйста, опубликуйте его.