我有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个盒子时),我想在输入数字后自动隐藏号码。
我有一个解决方案,在用户在一个框中键入数字后隐藏键盘,并在焦点移动到下一个框时再次显示。
但它不是最好的。我非常感谢您的意见,看看是否有人有更好的解决方案。
答案 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);