当edittext的maxLength为1时,如何覆盖编辑文本的文本

时间:2017-09-12 07:41:59

标签: android one-time-password

例如:我在edittext中输入1然后再次在同一个edittext中输入2然后不想删除manualy 1但是想直接从1到2覆盖它。

例如:

    editTextOtpFirst.addTextChangedListener(this);
    editTextOtpSecond.addTextChangedListener(this);

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

}

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

}

@Override
public void afterTextChanged(Editable s) {


    if (editTextOtpFirst.getText().length() ==1 && !checkEditTextEmpty(editTextOtpFirst)) {

        editTextOtpSecond.requestFocus();
    }
    if (editTextOtpSecond.getText().length() ==1 && !checkEditTextEmpty(editTextOtpFirst) ) {
        editTextOtpThird.requestFocus();
    }

}




 @Override
  public boolean onKey(View v, int keyCode, KeyEvent event) {
    if (v.getId() == R.id.editTextOtpThird) {
        if (event.getAction() == KeyEvent.ACTION_UP) {
            if (keyCode == KeyEvent.KEYCODE_DEL) {

                editTextOtpSecond.requestFocus();
                return true;
            }
        }
    }
    if (v.getId() == R.id.editTextOtpFourth) {
        if (event.getAction() == KeyEvent.ACTION_UP) {
            if (keyCode == KeyEvent.KEYCODE_DEL) {
                editTextOtpThird.requestFocus();
                return true;
            }
        }
    }
    if (v.getId() == R.id.editTextOtpSecond) {
        if (event.getAction() == KeyEvent.ACTION_UP) {
            if (keyCode == KeyEvent.KEYCODE_DEL) {

                editTextOtpFirst.requestFocus();
                return true;
            }
        }
    }

现在当我输入值" 1"在编辑文本-1然后光标移动到下一个编辑文本-2但我想从" 1"更改编辑文本-1的值。到" 4"但需要手动删除" 1"然后需要输入另一个值..但我不想要这个...我想直接覆盖" 1"到" 4"当我在编辑文本中键入另一个值时。

3 个答案:

答案 0 :(得分:1)

您可以使用TextWatcher通过在编辑文本中添加onTextChangeListener来执行此操作,如下所示:

editText.addOnTextChangeListener(new TextWatcher{
 beforeTextChanged(..){
// ..... can try something here
}
onTextChanged(Charsequence text, ...){
// or can append the text to the editText here
editText.setText("");
editText.append(text);
}
});

我也在忙着编写这段代码,所以请寻找正确的语法ps。接口名称是正确的。希望这有帮助!

答案 1 :(得分:0)

我认为您的解决方案是使用编辑文本提示而不是文本。您可以将提示颜色设置为您希望文本的颜色。然后,您可以使用setHint方法。

答案 2 :(得分:0)

你可以将这一行添加到你的布局xml文件中,android会为你做这些事情

android:maxLength="1"

你应该将它作为属性添加到editText元素,例如

<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="text"
    android:maxLength="1" />

这是一个老问题,但我认为这样做会很好。