您的位置:首页 > 其它

TextWatcher的用法

2017-08-14 17:34 225 查看
TextWatcher:对EditText输入时进行监听,可以进行判断输入是否合法


案例:



public class MainActivity extends AppCompatActivity {

private TextView tv;
private EditText et;

private CharSequence temp;

private int mEditStart;
private int mSelectionEnd;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

tv = (TextView) findViewById(R.id.tv);
et = (EditText) findViewById(R.id.et);

//对EditText输入时设置监听
et.addTextChangedListener(new TextWatcher() {
/**
* 文本变化之前调用
* @param s
* @param start
* @param count
* @param after
*/
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
Log.e("xyh", "beforeTextChanged:" + "" + count + "个字符从" + start + " 位置开始  已经被" + after + "个字符所替换");

temp = s;
}

/**
* 文本变化的时候调用
* @param s
* @param start
* @param before
* @param count
*/
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.e("xyh", "onTextChanged" + "" + count + "个字符仅仅从" + start + "开始要替换" + before + "个旧的字符");

tv.setText("输入的结果为:" + s);
}

/**
* 文本变化之后调用
* @param s
*/
@Override
public void afterTextChanged(Editable s) {
Log.e("xyh", "afterTextChanged" + "最终内容:" + s.toString());

mEditStart = et.getSelectionStart();
mSelectionEnd = et.getSelectionEnd();

if (temp.length() > 10) {
Toast.makeText(MainActivity.this, "输入的字数不能超过10", Toast.LENGTH_SHORT).show();

//输入10个后不能再输入
s.delete(mEditStart - 1, mSelectionEnd);
int tempSelection = mEditStart;
et.setText(s);
et.setSelection(tempSelection);
}
}
});
}
}





                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: