我有一个最大支持字符为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();
}
}
});
答案 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时,你将新值与旧值进行比较,如果它的值低于前一个值,则按下退格键,如果它大于那么用户可能键入了一个键。