package nida.com.inputfilteredittextdemo;
import android.content.Context;
import android.support.v7.widget.AppCompatEditText;
import android.text.Editable;
import android.text.InputFilter;
import android.text.Spanned;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.widget.Toast;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Created by ljx.
* Date 2017/8/21 14:22
* Description:
*/
public class InputFilterEditText extends AppCompatEditText {
private Context mContext;
private EmojiFilter mEmojiFilter;
private IEditTextLengthChangeListener listener;
private MaxTextLengthFilter lengthFilter;
public InputFilterEditText(Context context) {
super(context);
this.mContext = context;
initEditText();
}
public InputFilterEditText(Context context, AttributeSet attrs) {
super(context, attrs);
this.mContext = context;
initEditText();
}
public InputFilterEditText(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.mContext = context;
initEditText();
}
private void initEditText() {
mEmojiFilter = new EmojiFilter();
lengthFilter = new MaxTextLengthFilter(mContext, 15);
//必须放在前面,放在addTextChangedListener中间会导致第一次的空格等不能进行过滤
setFilters(new InputFilter[]{strFilter, mEmojiFilter, lengthFilter});
addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (listener != null) {
listener.textLength(s);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
public void setEditTextLengthChangeListener(IEditTextLengthChangeListener listener) {
this.listener = listener;
}
/**
* 仅仅过滤空格
*/
InputFilter emptyFilter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
if (source.toString().endsWith(" ")) {
return dest.subSequence(dstart, dend);
} else {
return null;
}
}
};
/**
* 过滤非法字符以及空白符,包括空格换行符等。
*/
InputFilter strFilter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
String speChat = "[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?\"£€]|\\s";
Pattern pattern = Pattern.compile(speChat);
Matcher matcher = pattern.matcher(source.toString());
if (matcher.find()) {
Toast.makeText(mContext, "lalla", Toast.LENGTH_LONG).show();
return dest.subSequence(dstart, dend);
} else {
return null;
}
}
};
public interface IEditTextLengthChangeListener {
void textLength(CharSequence s);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
InputFilterEditTextDEmo.zip (34个子文件)
InputFilterEditTextDEmo
.gitignore 127B
app
.gitignore 8B
build.gradle 977B
src
androidTest
java
nida
com
inputfilteredittextdemo
ExampleInstrumentedTest.java 794B
main
AndroidManifest.xml 746B
res
mipmap-xhdpi
ic_launcher_round.png 6KB
ic_launcher.png 5KB
mipmap-mdpi
ic_launcher_round.png 2KB
ic_launcher.png 2KB
layout
main.xml 790B
mipmap-xxhdpi
ic_launcher_round.png 10KB
ic_launcher.png 8KB
drawable
mipmap-hdpi
ic_launcher_round.png 4KB
ic_launcher.png 3KB
mipmap-xxxhdpi
ic_launcher_round.png 14KB
ic_launcher.png 10KB
values
strings.xml 89B
colors.xml 214B
styles.xml 394B
java
nida
com
inputfilteredittextdemo
MainActivity.java 349B
EmojiFilter.java 2KB
InputFilterEditText.java 3KB
MaxTextLengthFilter.java 1KB
test
java
nida
com
inputfilteredittextdemo
ExampleUnitTest.java 426B
build
libs
proguard-rules.pro 967B
app.iml 11KB
settings.gradle 16B
build.gradle 521B
build
gradlew 5KB
gradlew.bat 2KB
gradle.properties 747B
gradle
wrapper
gradle-wrapper.properties 236B
gradle-wrapper.jar 52KB
InputFilterEditTextDEmo.iml 877B
共 34 条
- 1
资源评论
ljx2010hxj
- 粉丝: 2
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功