这让我有点疯狂。
我有2个编辑文本字段和一个按钮。我想在第一个编辑文本获得焦点时显示软键盘。我希望软键盘显示“下一步”键,这样当按下时,光标会跳转到第二个“编辑文本”字段。
当第二个编辑文本字段获得光标时,我仍然希望软键盘显示“下一步”。现在按“下一步”将关闭软键盘并将焦点转到按钮。
这是我的代码:
EditText editText1 = (EditText) findViewById(R.id.some_text_field);
EditText editText2 = (EditText) findViewById(R.id.some_other_text_field);
editText1.setInputType(EditorInfo.some constant);
editText1.setFocusable(true);
editText1.setFocusableInTouchMode(true);
if (editText1.requestFocus()){
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null){
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
}
}
editText1.setImeOptions(EditorInfo.IME_ACTION_NEXT);
editText1.setNextFocusDownId(R.id.some_other_text_field);
editText2.setInputType(EditorInfo.some other constant);
editText2.setFocusable(true);
editText2.setFocusableInTouchMode(true);
editText2.setImeOptions(EditorInfo.IME_ACTION_DONE);
看起来非常简单。
事情是,第一次运行(在应用程序安装后)editText1获得焦点并且软键盘显示但是没有“下一步”键 - 而是显示“完成”。按“完成”会将您移动到editText2(如您所愿)并将“完成”更改为“下一步。点击”下一步“现在将焦点放在editText2上并取消软键盘。
如果您现在触摸editText1,则会显示软键盘,并显示“Next”键,如下所示。
我可以做些什么才能在第一次运行此活动时获得正确的行为(editText1获得焦点,“下一步”显示)?
我认为是editText1.setImeOptions(EditorInfo.IME_ACTION_NEXT);应该强制显示“下一步”键。我错过了什么?
答案 0 :(得分:3)
您是否尝试过布局文件中的相同操作。我在布局文件中做了它并且正在工作。以下是我登录edittexts的工作代码
<EditText
android:id="@+id/et_sign_in_with_email_email"
style="@style/SignInEditText"
android:layout_below="@id/rl_titlebar_signin"
android:layout_marginTop="16dp"
android:hint="@string/hint_email"
android:imeOptions="actionNext"
android:inputType="textEmailAddress" >
</EditText>
<EditText
android:id="@+id/et_sign_in_with_email_pwd"
style="@style/SignInEditText"
android:layout_below="@+id/et_sign_in_with_email_email"
android:layout_marginTop="20dp"
android:hint="@string/hint_pwd"
android:imeOptions="actionDone"
android:inputType="textPassword" />
答案 1 :(得分:0)
将焦点导航到下一个编辑字段添加
android:imeOptions="flagNavigateNext"
并点击完成后点击添加
解除软键android:imeOptions="actionDone"