键入后在EditText中隐藏一个数字

时间:2018-03-15 12:18:33

标签: android android-edittext android-softkeyboard

我有4个EditText框来输入PIN码,如下所示:

<EditText
        android:id="@+id/input_login_pin1"
        android:layout_width="@dimen/input_login_pin"
        android:layout_height="@dimen/input_login_pin"
        android:background="@drawable/input_pin"
        android:gravity="center"
        android:inputType="textPassword|number"
        android:maxLength="1"/>

我想要实现的行为如下:当用户在第一个框中键入他的第一个数字时,将其隐藏(如密码)并移至下一个框。

要将输入移动到下一个框,我使用的方法只是在用户输入后将焦点更改为下一个框,不会有问题。

pin1ET.addTextChangedListener(inputTextWatcher1);

private TextWatcher inputTextWatcher1 = new TextWatcher() {
    public void afterTextChanged(Editable s) { }
    public void beforeTextChanged(CharSequence s, int start, int count, int after)
    { }
    public void onTextChanged(CharSequence s, int start, int before, int count) {
            pin2ET.requestFocus();
   }

我的问题是,在用户隐藏键盘之前,数字不会被隐藏(当他完成4个盒子时),我想在输入数字后自动隐藏号码。

我有一个解决方案,在用户在一个框中键入数字后隐藏键盘,并在焦点移动到下一个框时再次显示。

但它不是最好的。我非常感谢您的意见,看看是否有人有更好的解决方案。

1 个答案:

答案 0 :(得分:0)

//first, we create an EditText
EditText answer = new EditText(this);

//秒,我们创建TextWatcher

TextWatcher textWatcher = new TextWatcher() {

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

    }

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

    }

    @Override
    public void afterTextChanged(Editable editable) {
       answer.setText("");

    }
};

//第三,我们必须将textWatcher添加到EditText

answer.addTextChangedListener(textWatcher);