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中将个别页面强制横屏其他页面竖屏