【问题标题】:How to delete masked edittext content如何删除蒙面的edittext内容
【发布时间】:2020-08-18 06:33:29
【问题描述】:

例如:“2020/55”我有一个edittext形状,在4个数字后面放一个,在它后面写一个数字,效果很好。我的问题从删除时开始。删除/后的部分时,显示“/////”/前的部分的数字为,而不是。我添加了你的图片,如何删除它。 enter image description here

还有掩码类

public class CaseInputMask implements TextWatcher {
int uzunluk = 0;
EditText girilenMetin;

public CaseInputMask(EditText girilenMetin) {
    this.girilenMetin = girilenMetin;
    this.girilenMetin.addTextChangedListener(this);
}

@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    String metin = girilenMetin.getText().toString();
    uzunluk = metin.length();
}

@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    try {
        String metin = charSequence.toString();
        String girilenDeger = girilenMetin.getText().toString();
        if (girilenDeger.length() == 4) {
            metin += '/';
            girilenMetin.setText(metin);
            girilenMetin.setSelection(metin.length());
        }
    } catch (Exception e) {

    }
}

@Override
public void afterTextChanged(Editable editable) {

}
}

【问题讨论】:

    标签: java android masking


    【解决方案1】:

    你应该像这样检查删除:

    public class CaseInputMask implements TextWatcher {
    private boolean running = false;
    private boolean deleting = false;
    private final String inputMask = "####/##";
    
    public CaseInputMask() {
    
    }
    
    @Override
    public void beforeTextChanged(CharSequence charSequence, int start, int count, int after) {
        deleting = count > after;
    }
    
    @Override
    public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
    }
    
    @Override
    public void afterTextChanged(Editable editable) {
        if (running || deleting) {
            return;
        }
        running = true;
    
        int length = editable.length();
        if (length < inputMask.length()) {
            if (inputMask.charAt(length) != '#') {
                editable.append(inputMask.charAt(length));
            } else if (inputMask.charAt(length-1) != '#') {
                editable.insert(length-1, inputMask, length-1, length);
            }
        }
    
        running = false;
       }
    }
    

    还有

    girilenMetin.addTextChangedListener(new CaseInputMask())
    

    【讨论】:

    • 有问题吗。我试过这段代码。它工作正常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    相关资源
    最近更新 更多