输入数字后自动转到下一个Edittext

时间:2018-02-27 11:45:02

标签: android android-edittext

我有一个布局,我有4个圆形<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:orientation="horizontal"> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/four_pin_background" android:inputType="number" android:textAlignment="center" android:maxLength="1" android:imeOptions="actionNext" android:cursorVisible="false"/> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/four_pin_background" android:inputType="number" android:textAlignment="center" android:maxLength="1" android:imeOptions="actionNext" android:cursorVisible="false"/> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/four_pin_background" android:inputType="number" android:textAlignment="center" android:maxLength="1" android:imeOptions="actionNext" android:cursorVisible="false"/> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/four_pin_background" android:inputType="number" android:textAlignment="center" android:maxLength="1" android:imeOptions="actionNext" android:cursorVisible="false"/> </LinearLayout> 来输入PIN码。

edittext

我想在输入第一个edittext的号码后,它应自动转到下一个edittext。 现在点击下一个{{1}}或点击软键盘上的下一个按钮后,我只能输入数字。 谁能帮助我怎么做?

3 个答案:

答案 0 :(得分:1)

附加TextWatcher

检查所需的editText输入长度,然后重点关注。

    editText.addTextChangedListener(new TextWatcher() {

        @Override
        public void afterTextChanged(Editable s) {
            if (s.length() == PIN_LENGTH) {
                focusNext();
            }
        }
    });

答案 1 :(得分:1)

按照以下步骤操作,它会为您提供所需的结果: -

使用EditTexts中的ID更新您的XML,如下所示: -

 <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="horizontal">

            <EditText
                android:id ="@+id/firstET"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/four_pin_background"
                android:inputType="number"
                android:textAlignment="center"
                android:maxLength="1"
                android:imeOptions="actionNext"
                android:cursorVisible="false"/>
      <EditText
               android:id ="@+id/secondET"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/four_pin_background"
                android:inputType="number"
                android:textAlignment="center"
                android:maxLength="1"
                android:imeOptions="actionNext"
                android:cursorVisible="false"/>

</LinearLayout>

然后在你的JAVA代码中,

参考这些EditTexts,并在您的onCreate()方法中添加此代码,如: -

EditText firstET , secondET;

firstET = (EditText) findViewByID(R.id.firstET); 
secondET = (EditText) findViewByID(R.id. secondET);


firstET.addTextChangedListener(new TextWatcher() {
    @Override
    public void afterTextChanged(Editable s) {
        // TODO Auto-generated method stub
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        // TODO Auto-generated method stub
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
         // add a condition to check length here - you can give here length according to your requirement to go to next EditTexts.
         if(firstET.getText().toString().trim().length() >2){
         firstET.clearFocus();
         firstET.requestFocus();
       }
      } 
});

答案 2 :(得分:1)

您需要使用addTextChangedListener

  

只要此EditText的文本发生更改,就会将TextWatcher添加到调用其方法的列表中。

示例代码

    editText.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                                 // specify length of your editext here to move on next edittext
            if(editText.getText().toString().trim().length()>=1){
                NexteditText.requestFocus();
            }
        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

        }

        @Override
        public void afterTextChanged(Editable editable) {

        }
    });