Android中的TextWatcher

时间:2015-06-25 13:34:57

标签: android textwatcher

我有一个最大支持字符为10的EditText。我想要的是当我输入计数时应该递减,而在退格时,计数应该递增.....

private static TextView messageCount=null;
messageCount=(TextView) findViewById(R.id.messageCount);

mMessageField.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
        }
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
        }
        @Override
        public void afterTextChanged(Editable s) {

            if(count>0)
            {
                count--;
                messageCount.setText("Count=>"+count);
                //Toast.makeText(mContext, "Count=>"+count, Toast.LENGTH_LONG).show();
            }               
        }
    });

3 个答案:

答案 0 :(得分:0)

尝试这样的事情:

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

    int count1 = 10 - mMessageField.getText().toString().length();
    messageCount.setText("Count=>"+String.valueOf(count1));

    }

它会告诉你textview的长度。把它放在“onTextChanged”里面,这样长度会根据你输入或删除的文字增加或减少。

答案 1 :(得分:0)

请检查以下更新的代码。

private static TextView messageCount=null;
messageCount=(TextView) findViewById(R.id.messageCount);

mMessageField.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
        }
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
        }
        @Override
        public void afterTextChanged(Editable s) {

            if(mMessageField.getText().toString().length <=10)
            {
                 if(count>0)
            {
               count =  10 - mMessageField.getText().toString().length();
                messageCount.setText("Count=>"+count);
                //Toast.makeText(mContext, "Count=>"+count, Toast.LENGTH_LONG).show();
            }          
            }else{
Toast.makeText(mContext, "You can enter maximum 10 character", Toast.LENGTH_LONG).show();

        }
    });

让我知道它是否会对你有帮助。

答案 2 :(得分:0)

可悲的是,据我所知,软键盘上的退格键不是您可以捕捉或做出反应的事件。

我能想到的最好的方法是创建一个整数值,用于保存&#34; afterTextChanged&#34;的当前文本长度。

然后,每次进入afterTextChanged时,你将新值与旧值进行比较,如果它的值低于前一个值,则按下退格键,如果它大于那么用户可能键入了一个键。