我创建了一个简单的短信发送应用。在这个应用程序中,我想添加一个文本计数器。这该怎么做 ?总字符数限制为164.请有人帮我这样做。
答案 0 :(得分:2)
首先为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.
}
});
看起来如何?
答案 1 :(得分:0)
我认为最好的解决方案是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) {}
}
希望它有所帮助!
答案 2 :(得分:0)
您可以在编辑文本的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
}
});
这对我有帮助。希望它也能帮到你。
答案 3 :(得分:0)
您可以添加以下代码
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());
}
});