我有两个editexts的布局。我需要设置第二个焦点,并在第一个点击输入键时进行编辑。我有设置焦点的代码,但当第二个获得焦点时, 无法开始输入 。
PS我还需要edittext正好是一行高,而不能制作附加行。它也有效。 pss android 2.3
XML代码:
<EditText
android:id="@+id/email"
style="@style/profileLoginInput"
android:layout_width="match_parent"
android:layout_height="wrap_content" android:hint="@string/email" android:ems="10" android:lines="1" android:maxLines="1" android:ellipsize="end">
<requestFocus />
</EditText>
<EditText
android:id="@+id/password"
style="@style/profileLoginInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:ems="10"
android:inputType="textPassword" android:hint="@string/password">
Java代码:
((EditText) findViewById(R.id.email)).setOnKeyListener(new OnKeyListener(){
@Override
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if (event.getAction() == KeyEvent.ACTION_DOWN)
{
switch (keyCode)
{
case KeyEvent.KEYCODE_DPAD_CENTER:
case KeyEvent.KEYCODE_ENTER:
((EditText) findViewById(R.id.password)).requestFocus();
return true;
default:
break;
}
}
return false;
}
});
答案 0 :(得分:23)
使用android:nextFocusDown
参数指定当用户点击回车键时您想要获得焦点的字段。
答案 1 :(得分:10)
android:inputType="text"
android:nextFocusDown="@+id/..."
为我工作
答案 2 :(得分:4)
机器人:nextFocusDown 为我工作得很好 但是删除了以下方法只有它的工作:
editText1.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE ||
actionId == EditorInfo.IME_ACTION_NEXT) {
editText2.requestFocus();
return false;
}
return false;
}
});
答案 3 :(得分:3)
除了在id前添加+:
android:inputType="text"
android:nextFocusDown="@+id/..."
我还必须补充:
android:imeOptions="actionNext"
答案 4 :(得分:2)
在模拟器上运行此代码时似乎有问题。但是,它适用于手机