我知道这里有很多类似的问题,但我在一个简单的样例应用程序中无法使任何提供的解决方案生效。
问题出现在第一次显示软键盘时。一旦它显示出来,只有再次按下 editText 才能编辑。
尝试了以下方法:
android:windowSoftInputMode="adjustPan|adjustResize"
这并没有解决任何问题。看起来这行代码是在软键盘弹出后重设活动的大小是必须的。不幸的是,它也会导致任何EditTexts失去焦点。这可能是因为ListView在调整大小过程中获得了焦点。因此,我尝试了以下解决方法:
listView.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);
这总是导致ListView包含的第一个可见EditText获得焦点,这是不希望发生的。按下时,应该使第二行中的第二个EditText获得焦点,但事实并非如此。而且,如果最终设法将焦点集中在另一个EditText上(例如通过在softkeyboard上按“下一步”),则在键盘消失并ListView重新调整到其完整大小后,第一个可见EditText将再次接收到焦点。
我尝试了其他几种方法,例如拦截ListView的onFocusChange()事件,同时通过其TouchListener知道哪个EditText被按下。再次请求某个特定EditText的焦点也没有任何成功。
像其他用户建议的那样,使用ScrollView而不是ListView对于相关项目也不是一个选项。
EditText
才能使用,而是因为软键盘出现了,因为它被一个可编辑的、首先获得焦点的字段触发。您可以尝试使用以下代码隐藏软键盘:public void hideSoftKeyboard(View v) { Activity activity = (Activity) v.getContext(); InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0); }
。 - g00dyEditText
只需按下即可触发其中的编辑。 - g00dy