我有一个带有6个EditText的活动性...该活动运行良好,但是我需要单击每个EditText来填充它...
如何使Enter键将焦点更改为另一个EditText?
我已经尝试过的内容
1 。我已经在每个EditText上设置了OnKeyListener。
switch (v.getId()) {
case R.id.editText1:
activity.findViewById(R.id.editText2).requestFocus();
return true;
case R.id.editText2:
activity.findViewById(R.id.editText3).requestFocus();
return true;
case R.id.editText3:
activity.findViewById(R.id.editText4).requestFocus();
return true;
.
.
.
}
但是,当我单击Enter键时,在焦点更改为另一个EditText之前,将在先前的EditText上创建新行。
2 。我已将android:singleLine="true"
添加到每个EditText。在inputType="number"
答案 0 :(得分:1)
您可以在XML中为imeOptions
添加EditText's
属性:
android:imeOptions="actionNext"
但不要忘记指定inputType
:
例如,android:inputType="text"
有关更多详细信息,请查看此问题-Move to another EditText when Soft Keyboard Next is clicked on Android
答案 1 :(得分:0)
尝试此代码:
在otp屏幕上工作正常,我在此活动中使用四个编辑文本,请按照以下步骤操作
我正在使用像这样的TextWatcher类
/*Textwatcher class*/
public class GenericTextWatcher implements TextWatcher {
private View view;
public GenericTextWatcher(View view) {
this.view = view;
}
@Override
public void afterTextChanged(Editable editable) {
// TODO Auto-generated method stub
String text = editable.toString();
switch(view.getId()) {
case R.id.edit_otp1:
if(text.length()==1)
edit_otp2.requestFocus();
break;
case R.id.edit_otp2:
if(text.length()==1)
edit_otp3.requestFocus();
break;
case R.id.edit_otp3:
if(text.length()==1)
edit_otp4.requestFocus();
break;
case R.id.edit_otp4:
break;
}
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
}
}
在这样的edittext otp活动中使用textwatcher
/*call textwatcher class*/
edit_otp1.addTextChangedListener(new GenericTextWatcher(edit_otp1));
edit_otp2.addTextChangedListener(new GenericTextWatcher(edit_otp2));
edit_otp3.addTextChangedListener(new GenericTextWatcher(edit_otp3));
edit_otp4.addTextChangedListener(new GenericTextWatcher(edit_otp4));
对我有用,请尝试。