Мягкая клавиатура всплывает и медленно прячется во фрагментах, что делает набор текста медленным
Я использую [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
}
}
});
Однако, если кто-то знает элегантное решение, пожалуйста, опубликуйте его.