我在我的应用中使用[SlidingMenu] [1]。我使用Viewpager在片段中的选项卡中显示三个片段。 EditTexts
内的三个片段LinearLayouts
位于ScrollView
。所以我的XML XMl是这样的:
RelativeLayout>ScrollView>LinearLayout>EditText
。
将焦点更改为每个EditText
后,键入开始非常缓慢(需要1-2秒才能响应)。我认为这是因为软键盘每次尝试调整大小或平移。所以我尝试了windowSoftInputMode的所有可能值。什么都行不通。我在Activity中使用了相同的XML,其中输入非常流畅。打字完成后(当用户点击IME完成按钮时),键盘隐藏非常慢(需要3秒)。可能是什么问题呢?以及任何避免的解决方法?
顺便说一句,我没有为TextWatchers
设置任何EditTexts
。
修改
当我从其他两个片段中删除EditTexts
时,它很顺利。但只有当所有三个片段都有EditTexts
时,它才会缓慢。
答案 0 :(得分:3)
我通过添加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
}
}
});
没有调整大小也没有滚动。并添加了Focus监听器来编辑位于屏幕底部的文本,以便在输入时用户可以看到它们。
{{1}}
但是,如果有人知道优雅的解决方案,请发布。