我的应用中有一个表格,里面装满了EditTexts。在表单中间的某处,有一个日期选择器对话框(See here)。用户可以通过点击软键盘上的“下一步”按钮从EditText转到EditText。当用户到达日期选择器时,键盘将关闭并显示对话框。当用户选择日期时,我希望表单中的下一个EditText获得焦点并再次显示键盘。
我目前所拥有的是日期设置,对话框关闭,下一个EditText获得焦点并显示光标,但键盘不会打开。我尝试过各种方法试图让键盘打开,但似乎都没有。这是我的一些代码
RelativeLayout next = rows.get(currentRow);
next.requestFocus();
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
在这里,我从RelativeLayouts(rows
)列表中获取下一个RelativeLayout。我请求焦点这一行,然后我要求打开软键盘。这不起作用。
我也在我的EditText onFocusChangedListener
中尝试了这个:
@Override
public void onFocusChange(View v, boolean hasFocus) {
...
String s = text.getText().toString().trim();
if (hasFocus){
...
imm.showSoftInput((EditText)v, InputMethodManager.SHOW_IMPLICIT);
}
答案 0 :(得分:0)
您是否尝试在活动清单文件中添加以下内容?
android:windowSoftInputMode =“stateAlwaysVisible”
这会使您的键盘在该活动中始终可见。
答案 1 :(得分:0)
也许这是一个迟到的答案,但我遇到了与我的应用程序类似的问题。在我的应用程序中有一些editText元素和一个取消按钮,弹出一个警告对话框(有消息,你一定要取消?)。取消对话框后,即使光标位于editText中,键盘也不会出现。所以我创建了一个两个Runnable实例(一个用于清晰焦点,一个用于请求关注元素)并在需要时调用它们。例如。当对话框出现时调用清晰焦点,当消息出现时调用请求焦点一个。最后它对我有用。