android – 如何使用TextWatcher删除EditText中的文本?每次它检测到一个字符串并格式化它

android – 如何使用TextWatcher删除EditText中的文本?每次它检测到一个字符串并格式化它,第1张

概述我有一个带TextWatcher的EditText.它应该将文本格式化为人类高度,如5’9“.但是当用户犯了错误并想删除输入错误的字符时,TextWather不允许他这样做.假设用户想删除”characther the TextWather立即加回.下面是代码.那么如何允许用户删除EditText中的文本? private class CustomTextWatcher implements Te 我有一个带TextWatcher的EditText.它应该将文本格式化为人类高度,如5’9“.但是当用户犯了错误并想删除输入错误的字符时,TextWather不允许他这样做.假设用户想删除”characther the TextWather立即加回.下面是代码.那么如何允许用户删除EditText中的文本?
private class CustomTextWatcher implements TextWatcher {    private EditText mEditText;public CustomTextWatcher(EditText e) {    mEditText = e;}public voID beforeTextChanged(CharSequence s,int start,int count,int after) {}public voID onTextChanged(CharSequence s,int before,int count) {}public voID afterTextChanged(Editable s) {    int count = s.length();    String str = s.toString();    if (count == 1) {        str = str + "'";    } else if (count == 3) {        str = str + "\"";    } else if ((count > 4) && (str.charat(str.length() - 1) != '\"')) {        str = str.substring(0,str.length() - 2)                + str.charat(str.length() - 1) + "\"";    } else {        return;    }    mEditText.setText(str);    mEditText.setSelection(mEditText.getText().length());}

}

解决方法 忽略Karakuri发布的有关您的代码处于错误回调中的事实,您可以添加一个简单的修复程序,您只需要听取用户使用的密钥.

如果没有对现有代码进行任何实际测试或进一步改进,这似乎可以解决您描述的问题:

package com.example.testwatchertest;import androID.app.Activity;import androID.os.Bundle;import androID.text.Editable;import androID.text.TextWatcher;import androID.vIEw.KeyEvent;import androID.vIEw.VIEw;import androID.vIEw.VIEw.OnKeyListener;import androID.Widget.EditText;public class MainActivity extends Activity implements TextWatcher {    EditText editText;    boolean keyDel = false;    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_main);        editText = (EditText) findVIEwByID(R.ID.editText);        editText.addTextChangedListener(this);        editText.setonKeyListener(new OnKeyListener() {            @OverrIDe            public boolean onKey(VIEw v,int keyCode,KeyEvent event) {                if (keyCode == KeyEvent.KEYCODE_DEL){                    keyDel = true;                }else{                    keyDel = false;                }                return false;            }        });    }    @OverrIDe    public voID afterTextChanged(Editable s) {        // Todo auto-generated method stub    }    @OverrIDe    public voID beforeTextChanged(CharSequence s,int after) {        // Todo auto-generated method stub    }    @OverrIDe    public voID onTextChanged(CharSequence s,int count) {        if (!keyDel) {            String str = s.toString();            if (count == 1) {                str = str + "'";            } else if (count == 3) {                str = str + "\"";            } else if ((count > 4) && (str.charat(str.length() - 1) != '\"')) {                str = str.substring(0,str.length() - 2) + str.charat(str.length() - 1) + "\"";            } else {                return;            }            editText.setText(str);            editText.setSelection(editText.getText().length());        }    }}
总结

以上是内存溢出为你收集整理的android – 如何使用TextWatcher删除EditText中的文本?每次它检测到一个字符串并格式化它全部内容,希望文章能够帮你解决android – 如何使用TextWatcher删除EditText中的文本?每次它检测到一个字符串并格式化它所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1145237.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存