0

在 EdiText 中设置焦点时遇到问题。下面是我的 EditText 属性。

              <EditText
                    android:id="@+id/gatekeeperDetailedtUnitNo"
                    android:layout_width="270dip"
                    android:layout_height="wrap_content"
                    android:layout_below="@id/gatekeeperDetailtxtUnitNo"
                    android:layout_marginTop="10dip"
                    android:hint="@string/unit_number"
                    android:inputType="number"
                    android:maxLength="8"
                    android:lines="1" />

现在我在 6 位数字后添加了“-”。为此,我实现了 TextWatcher。

 edtUnitNo.addTextChangedListener(new TextWatcher() {

        /**
         * This method is used to change charSequence when user enter more
         * then 6 character.
         */
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            if (count < 7) {
                if (s.toString().contains("-")) {
                    Log.e(TAG, "< 7 Called");
                    String[] st1;
                    st1 = s.toString().split("-");
                    String st2 = st1[0];
                    edtUnitNo.setText(st2);
                    edtUnitNo.requestFocus();
                    edtUnitNo.requestFocus(EditText.FOCUS_RIGHT);
                }
            }
            if (edtUnitNo.getText().toString().length() == 7) {
                Log.e(TAG, "== 7 Called");
                String s1 = edtUnitNo.getText().toString();
                String s2 = s1.substring(0, 6);
                char s3 = s.charAt(6);
                edtUnitNo.setText(s2 + "-" + s3);
            }
        }

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

        }

        public void afterTextChanged(Editable s) {

        }
    });

例如。我的 EditText 值看起来像“123456-7”。当我添加 7 位数字和“-”时,我遇到了问题。当我试图删除最后一个字符“7”时,焦点来到第 0 个位置。

但我想把焦点放在最后删除的字符位置(6 之后)。

4

1 回答 1

2

放入edtUnitNo.setSelection(edtUnitNo.getText().length());afterTextChanged 函数........

于 2012-06-12T06:00:58.173 回答