【问题标题】:How to add Character counter to SMS APP? [closed]如何在短信APP中添加字符计数器? [关闭]
【发布时间】:2013-12-23 13:21:56
【问题描述】:

我正在创建一个简单的短信发送应用程序。在这个应用程序中,我想添加一个文本计数器。这个怎么做 ?总字符数限制为 164。请任何人帮我这样做。

【问题讨论】:

标签: android


【解决方案1】:

首先为您的 EditText 设置最大长度,例如 ,android:maxLength="164"

现在您必须在用户键入消息时验证 EditText 的长度,这可以使用 TextWatcher Class & addTextChangedListener Listener

现在制作简单的函数来验证您的输入文本,如下所示,

public void Check_SMS_Length(EditText edt) throws NumberFormatException {
            try {
            if (edt.getText().toString().length() <= 0) {
                            edt.setError("Sorry...!! Its Mandatory Field");
                            valid_len = 0;
                            tv.setText("0/164");

                        } else {
                            valid_len = edt.getText().toString().length();
                            tv.setText(String.valueOf(valid_len) + "/" + 164);
                        }
                    } catch (Exception e) {
                        Log.e("error", "" + e);
                    }

                }

并在afterTextChanged中调用这个函数。

edt.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        // TODO Auto-generated method stub
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        // TODO Auto-generated method stub
    }

    @Override
    public void afterTextChanged(Editable s) {
        // TODO Auto-generated method stub
        Check_SMS_Length(edt); // pass your EditText Obj here.
    }
});

它会是什么样子?

【讨论】:

    【解决方案2】:

    您可以添加以下代码

    edtCustomerSearch = (EditText) findViewById(R.id.edtCustomerSearch);
    edtCustomerSearch.addTextChangedListener(new TextWatcher() {
    @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
        // TODO Auto-generated method stub
    
        }
    
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        // TODO Auto-generated method stub
    
        }
    
        @Override
        public void afterTextChanged(Editable s) {
        // TODO Auto-generated method stub
            Log.d("TAG","lenth: "+edtCustomerSearch.getText().toString().length());
        }
    }); 
    

    【讨论】:

      【解决方案3】:

      我认为最好的解决方案是TextWatcher。它是一个界面,有 3 种方法,可用于在更改文本之前、期间和之后执行操作。您可以将此接口添加到任何可编辑对象,例如 EditText。

      TextWatcher TextEditorWatcher = new TextWatcher() {
          public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
          public void onTextChanged(CharSequence s, int start, int before, int count) {}
          public void afterTextChanged(Editable s) {}
      }
      

      希望对你有帮助!

      【讨论】:

        【解决方案4】:

        您可以在编辑文本的xml属性中设置编辑文本的最大字符数,如下所示:

        android:maxLength="164"
        

        此外,要动态计算文本字段中的字符数,您可以使用以下代码:

        //Global counter variable
        final int counter=0;
        
        //For your edit text, set a text change listener as shown below
        
        EditText edt=(EditText)findViewById(R.id.editText1);
        
        edt.addTextChangedListener(new TextWatcher() {
        
                    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                    }
                    public void onTextChanged(CharSequence s, int start, int before, int count) {
                        try {
                           counter=count;
                           if(counter>164)
                                Toast.makeText(getApplicationContext(),"Max length reached",Toast.LENGTH_SHORT).show();  
                        } catch (NumberFormatException e) {
                        }
                    }
                    @Override
                    public void afterTextChanged(Editable s) {
                        // TODO Auto-generated method stub
        
                    }
                });
        

        这对我有帮助。希望对你也有帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-02-13
          • 2012-09-18
          • 2020-05-30
          • 1970-01-01
          • 1970-01-01
          • 2016-03-01
          • 2021-03-30
          相关资源
          最近更新 更多