我搜索并搜索了这个问题的答案,看起来像答案的一切都没有用,所以我想我会问。
我在EditText
添加了几个ListView
个框,这是ListActivity
的基础。当我将windowSoftInputMode
设置为adjustPan
并点击EditText
时,它会一直有效,直到您再次点击它然后键盘覆盖它为止。当我使用adjustResize
时它会工作,除非键盘出现时EditText
失去焦点,我必须再次点按它才能输入。
我试图找出如何捕获onResize
,但这似乎与View有关,而不是活动,我不完全确定如何倾听它。我还尝试了EditText
框和ListView
本身的各种可聚焦设置(我读过的其他帖子中的建议)似乎也没有帮助。
答案 0 :(得分:61)
您真正需要做的就是将其应用于ListView:
<强> XML:强>
android:descendantFocusability="afterDescendants"
<强>爪哇:强>
listView.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);
答案 1 :(得分:2)
在我的情况下,完美的工作是添加类似代码来表示:
android:windowSoftInputMode="adjustPan"
答案 2 :(得分:0)
您是否尝试adjustResize
后确保通过EditText
之类的操作将焦点重置为EditText.requestFocus();
,以便重新关注并且用户不必再次点击它。您可以使用EditText.isFocused()
来查看它是否在调试日志语句中集中(true)或不集中(false)。
您可能需要使用focusable
将字段设置为SetFocusable()
,但要小心,因为这可能会从ListView
本身带走焦点并阻止您稍后滚动或选择一些内容,这样你就必须使用可设置为焦点的设置,并且是有针对性的东西。
答案 3 :(得分:0)
答案 4 :(得分:0)
mViewHolder.editText = (EditText)convertView.findViewById(R.id.editText1);
mViewHolder.editText.setTag(position);
mViewHolder.editText.setTextColor(0xFF000000);
mViewHolder.editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
EditText et =(EditText)v.findViewById(R.id.editText1);
editTextArrayList.set(position,et.getText().toString().trim());
}
}
});
您好,以下链接可能会对您有所帮助http://mylearnandroid.blogspot.in/2014/06/listview-problem-while-scrolling.html
答案 5 :(得分:0)
对我来说,以下组合帮助了我(尤其是第3号):
1)将以下内容添加到清单文件中的相关活动中,这需要调整ListView的大小以仅填充softKeyboard上方的区域:
android:windowSoftInputMode="adjustResize"
2)使用下面的ListView只有在没有后代想要它时才会获得焦点。后代(EditText)需要获得并保持焦点。
<ListView
...
android:descendantFocusability="afterDescendants"/>
3)在键盘正上方自动显示/隐藏拼写建议栏会一直触发ListView刷新。我为ListView中的任何EditText关闭了建议。
<EditText
...
android:inputType="textNoSuggestions|textVisiblePassword" />
答案 6 :(得分:0)
回收者视图效果最佳,无需随处乱搞任何其他属性。