Android EditText限制输入字符类型的方法总结
发布时间 - 2026-01-11 00:02:54 点击率:次Android EditText限制输入字符类型的方法总结

前言:
最近的项目上需要限制EditText输入字符的类型,就把可以实现这个功能的方法整理了一下:
1、第一种方式是通过EditText的inputType来实现,可以通过xml或者Java文件来设置。假如我要设置为显示密码的形式,可以像下面这样设置:
在xml中
Android:inputType="textPassword"
在java文件中,可以用 myEditText.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
当然,还有更多的其他属性用来进行输入设置。
2、第二种是通过android:digits 属性来设置,这种方式可以指出要显示的字符,比如我要限制只显示数字,可以这样:
android:digits="0123456789"
如果要显示的内容比较多,就比较麻烦了,将要显示的内容依次写在里面。
3、通过正则表达式来判断。下面的例子只允许显示字母、数字和汉字。
public static String stringFilter(String str)throws PatternSyntaxException{
// 只允许字母、数字和汉字
String regEx = "[^a-zA-Z0-9\u4E00-\u9FA5]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
return m.replaceAll("").trim();
}
然后需要在TextWatcher的onTextChanged()中调用这个函数,
@Override
public void onTextChanged(CharSequence ss, int start, int before, int count) {
String editable = editText.getText().toString();
String str = stringFilter(editable.toString());
if(!editable.equals(str)){
editText.setText(str);
//设置新的光标所在位置
editText.setSelection(str.length());
}
}
4、通过InputFilter来实现。
实现InputFilter过滤器,需要覆盖一个叫filter的方法。
public abstract CharSequence filter ( CharSequence source, //输入的文字 int start, //开始位置 int end, //结束位置 Spanned dest, //当前显示的内容 int dstart, //当前开始位置 int dend //当前结束位置 );
下面的实现使得EditText只接收字符(数字、字母和汉字)和“-”“_”,Character.isLetterOrDigit会把中文也当做Letter。
editText.setFilters(new InputFilter[] {
new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart,
int dend) {
for (int i = start; i < end; i++) {
if ( !Character.isLetterOrDigit(source.charAt(i)) && !Character.toString(source.charAt(i)) .equals("_") && !Character.toString(source.charAt(i)) .equals("-"))
{
return "";
}
}
return null;
} });
另外使用InputFilter还能限制输入的字符个数,如
EditText tv =newEditText(this);
int maxLength =10;
InputFilter[] fArray =new InputFilter[1];
fArray[0]=new InputFilter.LengthFilter(maxLength);
tv.setFilters(fArray);
上面的代码可以限制输入的字符数最大为10。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Android
# EditText限制输入字符类型的几种方式
# EditText限制字符类型的方法
# Android EditText限制输入字数的方法
# Android编程中EditText限制文字输入的方法
# Android开发中给EditText控件添加TextWatcher监听实现对输入字数的限制(推荐)
# Android EditText限制输入字符的方法总结
# Android TextWatcher监控EditText中的输入内容并限制其个数
# Android EditText限制输入整数和小数的位数的方法示例
# Android最简单的限制输入方法(只包含数字、字母和符号)
# 我要
# 来实现
# 只允许
# 还能
# 可以用
# 可以通过
# 就把
# 希望能
# 只显示
# 可以实现
# 会把
# 一个叫
# 谢谢大家
# 比较多
# 设置为
# 写在
# 第二种
# 第一种
# 麻烦了
# 正则表达式
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
Laravel如何处理CORS跨域请求?(配置示例)
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】
免费网站制作appp,免费制作app哪个平台好?
教你用AI润色文章,让你的文字表达更专业
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
如何在建站之星绑定自定义域名?
详解Android中Activity的四大启动模式实验简述
如何在IIS中新建站点并配置端口与物理路径?
Python面向对象测试方法_mock解析【教程】
如何做网站制作流程,*游戏网站怎么搭建?
Laravel如何优化应用性能?(缓存和优化命令)
Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
高防服务器如何保障网站安全无虞?
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
C#如何调用原生C++ COM对象详解
如何正确下载安装西数主机建站助手?
如何挑选优质建站一级代理提升网站排名?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
如何在自有机房高效搭建专业网站?
HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】
javascript中的try catch异常捕获机制用法分析
Laravel如何为API生成Swagger或OpenAPI文档
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
Laravel怎么上传文件_Laravel图片上传及存储配置
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
Laravel Admin后台管理框架推荐_Laravel快速开发后台工具
使用spring连接及操作mongodb3.0实例
如何确认建站备案号应放置的具体位置?
如何实现javascript表单验证_正则表达式有哪些实用技巧
Bootstrap CSS布局之列表
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置
Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】
打造顶配客厅影院,这份100寸电视推荐名单请查收
如何快速搭建高效可靠的建站解决方案?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
网站建设要注意的标准 促进网站用户好感度!
Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】
Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
Laravel如何使用Blade组件和插槽?(Component代码示例)
谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程
iOS中将个别页面强制横屏其他页面竖屏

