0

我有三个 EditBoxes 在一个框中输入数字后设置下一个焦点的最佳方法是什么,然后跟踪从 box3 到 box2 再到 box1 或从 box3 到的删除(向后移动)的最佳方法是什么box2,然后如果我尝试向 box3 输入内容,则可以将其聚焦并在 box3 上输入新数字,如果 box2 已经有某些内容。

我想从这个问题开始,这个问题比我在这里发布的要简单得多:(你可以看到我在那里尝试了什么,但我想如果我得到了基本的想法,我可能会成功)。

发布问题的详细信息

我只是在使用两个不同的东西时遇到了一个大问题,OnkeyListener 用于删除和 TextWatch 用于输入,我似乎无法正确处理。安卓新手。

4

1 回答 1

1

在这里,我给你一个简单的例子,它有 3 个编辑框,分别向每个编辑框显示手机号码 3、3、4 位并更改焦点。

xml

            <EditText
                android:id="@+id/edtxt_phonenumber_one"
                android:layout_width="wrap_content"
                android:layout_height="39dp"
                android:layout_margin="5dp"
                android:layout_weight="1"
                android:background="@drawable/textbox_1"
                android:ems="3"
                android:maxLength="3"
                android:gravity="center"
                android:inputType="number" />

            <EditText
                android:id="@+id/edtxt_phonenumber_two"
                android:layout_width="wrap_content"
                android:layout_height="39dp"
                android:layout_margin="5dp"
                android:layout_weight="1"
                android:background="@drawable/textbox_1"
                android:ems="3"
                 android:maxLength="3"
                android:gravity="center"
                android:inputType="number" />

            <EditText
                android:id="@+id/edtxt_phonenumber_three"
                android:layout_width="wrap_content"
                android:layout_height="39dp"
                android:layout_margin="5dp"
                android:layout_weight="1"
                android:background="@drawable/textbox_1"
                android:ems="4"
                 android:maxLength="4"
                android:gravity="center"
                android:inputType="number" />
        </LinearLayout>

班级

//Initialize 3 of EditBox.

// Rest of te code

edtxt_phonenumber1.addTextChangedListener(new TextWatcher() {
            public void afterTextChanged(Editable s) {

                if (s.length() > 2) {
                    edtxt_phonenumber2.requestFocus();
                }
                            if (s.length()==0) {
                //previoue_box.requestFocus();
            }
            }

            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
            }

            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {
            }
        });

        edtxt_phonenumber2.addTextChangedListener(new TextWatcher() {
            public void afterTextChanged(Editable s) {
                if (s.length() > 2) {
                    edtxt_phonenumber3.requestFocus();
                }
                            if (s.length()==0) {
                edtxt_phonenumber1.requestFocus();
            }
            }

            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {


            }

            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {

            }
        });
        edtxt_phonenumber3.addTextChangedListener(new TextWatcher() {
            public void afterTextChanged(Editable s) {
                if (s.length() > 3) {
                    edtxt_email.requestFocus();
                }
                            if (s.length()==0) {
                edtxt_phonenumber2.requestFocus();
            }
            }

            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {


            }

            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {


            }
        });

希望能帮助到你!!

于 2013-09-05T06:09:57.823 回答