Android:输入键移至下一个EditText

时间:2018-10-24 21:15:17

标签: android android-edittext

我有一个带有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"

上的EditText上不起作用

2 个答案:

答案 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));

对我有用,请尝试。