Android 中的 TextWatcher
TextWatcher in Android
我有一个最大支持字符为 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();
}
}
});
尝试这样的事情:
@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));
}
它会告诉你文本视图的长度。将其放在 "onTextChanged" 中,这样长度会根据您输入或删除的文本而增加或减少。
请检查下面更新的代码。
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();
}
});
如果对你有帮助,请告诉我。
遗憾的是,据我所知,软键盘上的退格键不是您可以捕捉或响应的事件。
我能想到的最好的方法是创建一个整数值来保存 "afterTextChanged" 上的当前文本长度。
然后,每次你到达 afterTextChanged 时,你都会将新值与旧值进行比较,如果它的值低于之前的值,那么你按下退格键,如果它更大,那么用户可能键入了一个键。
我有一个最大支持字符为 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();
}
}
});
尝试这样的事情:
@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));
}
它会告诉你文本视图的长度。将其放在 "onTextChanged" 中,这样长度会根据您输入或删除的文本而增加或减少。
请检查下面更新的代码。
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();
}
});
如果对你有帮助,请告诉我。
遗憾的是,据我所知,软键盘上的退格键不是您可以捕捉或响应的事件。
我能想到的最好的方法是创建一个整数值来保存 "afterTextChanged" 上的当前文本长度。
然后,每次你到达 afterTextChanged 时,你都会将新值与旧值进行比较,如果它的值低于之前的值,那么你按下退格键,如果它更大,那么用户可能键入了一个键。