EditText屏蔽特殊字符(设置键盘不接受回车。。用URLEncoder.encode()就可以解决)
2016-05-18 17:27
417 查看
et_content = (EditText) findViewById(R.id.et_content);
et_content.addTextChangedListener(watcher);
et_content.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_UNSPECIFIED) {
return true;
}
return false;
}
});
//输入表情前EditText中的文本
private String tmp;
//是否重置了EditText的内容
private boolean resetText;
private TextWatcher watcher = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(!resetText){
String regEx="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(s.toString());
if( m.find()){
et_content.setText(tmp);
et_content.invalidate();
Toast.makeText(YiJianFanKuiActivity.this, "不允许输入特殊符号!", Toast.LENGTH_LONG).show();
}
}else{
resetText = false;
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
if(!resetText){
tmp = s.toString();//这里用s.toString()而不直接用s是因为如果用s,那么,tmp和s在内存中指向的是同一个地址,s改变了,tmp也就改变了,那么表情过滤就失败了
}
}
@Override
public void afterTextChanged(Editable s) {
Editable etext = et_content.getText();
Selection.setSelection(etext, etext.length());
}
};
et_content.addTextChangedListener(watcher);
et_content.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_UNSPECIFIED) {
return true;
}
return false;
}
});
//输入表情前EditText中的文本
private String tmp;
//是否重置了EditText的内容
private boolean resetText;
private TextWatcher watcher = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(!resetText){
String regEx="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(s.toString());
if( m.find()){
et_content.setText(tmp);
et_content.invalidate();
Toast.makeText(YiJianFanKuiActivity.this, "不允许输入特殊符号!", Toast.LENGTH_LONG).show();
}
}else{
resetText = false;
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
if(!resetText){
tmp = s.toString();//这里用s.toString()而不直接用s是因为如果用s,那么,tmp和s在内存中指向的是同一个地址,s改变了,tmp也就改变了,那么表情过滤就失败了
}
}
@Override
public void afterTextChanged(Editable s) {
Editable etext = et_content.getText();
Selection.setSelection(etext, etext.length());
}
};
相关文章推荐
- 儿童教育:是否应该让他写好字
- 找水王
- java.lang.IllegalStateException: Could not find a method false(View) in the activity class com.xuan
- 封装与抽象 —— 让调用更为简单
- ceph存储 一致性hash算法释义
- attachEvent方法的作用
- linux中python环境搭建及升级后yum不可用解决方案
- Error: com.android.ide.common.process.ProcessException: org.gradle.proc ess.internal.ExecException:
- 《利用Python 进行数据分析》 - 笔记(4)
- LODOP
- 第十二周项目2:实现复数类中的运算符重载(1)
- 系统资源性能监测
- Java学习-30天
- math.random()和Math.round的区别
- 嵌入式开发的学习步骤及入门
- Unable to load class ‘org.codehaus.groovy.runtime.typehandling.ShortTypeHandling’
- 运用PopWindow实现仿微信弹出下拉列表
- 设计模式
- 线程详解
- ZooKeeper 3.4.5 分布式环境搭建详解