Android EditText设置Filter以后,xml布局文件中maxLength不起作用的解决办法

问题发现

最近项目里有个需求,文本框禁用emoji表情的输入,因为用到的地方较多,第一个想到的是继承EditText,重写这个控件,然后定义一个过滤器来过滤。做完的时候发现,我在xml布局文件中设置的maxLength不起作用了,找了半天,定位到问题在设置filter这里,当我取消掉自定义的过滤器,就恢复正常了。

下面是解决前的代码:

public class FilterEmojiEditText extends android.support.v7.widget.AppCompatEditText {

InputFilter[] fileList = new InputFilter[]{new MyInputFilter()};

public FilterEmojiEditText(Context context) {

this(context,null);

}

public FilterEmojiEditText(Context context, AttributeSet attrs) {

this(context,null,0);

}

public FilterEmojiEditText(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

init();

}

private void init() {

setFilters(fileList);

}

}

问题思考

想了几个办法,都没有实现,最后看EditText控件源码,看到一个方法,getFilters(),看了下能获取到本来有的filter,所以就想着设置之前把原来的拿过来,一起设置下。思路有了,开始撸代码。

问题解决

下面是解决后的代码:

public class FilterEmojiEditText extends android.support.v7.widget.AppCompatEditText {

InputFilter[] fileList ;

public FilterEmojiEditText(Context context) {

this(context,null);

}

public FilterEmojiEditText(Context context, AttributeSet attrs) {

this(context,null,0);

}

public FilterEmojiEditText(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

init();

}

private void init() {

if(getFilters() != null && getFilters().length > 0){

fileList = new InputFilter[getFilters().length +1];

for (int i = 0;i < getFilters().length;i++){

fileList[i] = getFilters()[i];

}

fileList[fileList.length-1] = new MyInputFilter();

setFilters(fileList);

}else {

fileList = new InputFilter[]{new MyInputFilter()};

setFilters(fileList);

}

}

}

如有问题,欢迎指正!

本文地址:https://blog.csdn.net/m0_38048084/article/details/107770375

maxlength不起作用android,Android EditText设置Filter以后(xml布局文件中maxLength不起作用的解决办法)...相关推荐

  1. Android布局文件中的xmlns:tools作用以及用法

    最近被布局文件中的 xmlns:tools="http://schemas.android.com/tools" xmlns:lu="http://schemas.and ...

  2. android xml ignore,工具:ignore =“UselessParent”是什么意思在Android XML布局文件中?...

    在你的情况 tools:ignore="UselessParent" 告诉你的IDE,以避免显示如下消息:"这RelativeLayout的布局或它的LinearLayo ...

  3. Android View 动态加载不同xml布局文件

    以下代码可做参考, 主要是需要先removeAllViews(),在这里卡了会. public class BottomBar extends LinearLayout {private Contex ...

  4. Android中measure过程、WRAP_CONTENT详解以及 xml布局文件解析流程浅析

    转自:http://www.uml.org.cn/mobiledev/201211221.asp 今天,我着重讲解下如下三个内容: measure过程 WRAP_CONTENT.MATCH_PAREN ...

  5. Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(下)

       本文原创, 转载请注明出处:http://blog.csdn.net/qinjuning 上篇文章<<Android中measure过程.WRAP_CONTENT详解以及xml布局文 ...

  6. 【Android 安装包优化】Tint 着色器 ( 简介 | 布局文件中的 Tint 着色器基本用法 | 代码中使用 Tint 着色器添加颜色效果 )

    文章目录 一.Tint 着色器简介 二.布局文件中的 Tint 着色器基本用法 三.代码中使用 Tint 着色器添加颜色效果 四.参考资料 一.Tint 着色器简介 Tint 着色器的作用是是 可以使 ...

  7. Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(上)

    在之前一篇博文中<< Android中View绘制流程以及invalidate()等相关方法分析>> ,简单的阐述 了 Android View 绘制流程的三个步骤,即: 1. ...

  8. Android在Activity中动态增加xml自定义样式布局控件(引用xml布局文件和循环增加控件)

    工程目录: MainActivity package com.example.test1121;import androidx.appcompat.app.ActionBar; import andr ...

  9. 【Android】安卓布局文件中xmlns属性

    定义及使用 xmlns是XML Namespaces的缩写,中文名称是XML(标准通用标记语言的子集)命名空间 自定义View的时候有时候会在布局文件中使用到 命名规则如下: xmlns:前缀=htt ...

最新文章

  1. 深入理解ceph-disk prepare 源码逻辑
  2. [LeetCode] Remove Element
  3. linux7开启ipmi,通过IPMI安装CentOS7教程
  4. golang函数:命名返回值代码示例
  5. .NET Core中使用结果过滤器ResultFilter统一结果返回封装
  6. 访问控制列表(二)配置命令
  7. 岚图FREE店内静态体验
  8. rto净化效率计算公式_旋转式RTO,催化燃烧设备,在各行业的应用及优势
  9. 【学习OpenCV4】几何图形的绘制方法
  10. python socket recvfrom 超时捕获_python-udp客户端超时机制
  11. 电信单线实现上网加看电视 HS8145V +K2P华硕固件
  12. 计算机考研408每日一题 day160
  13. 自定义形状的ImageView制作
  14. python将pdf转成excel_wpspdf转换成excel Python转换PPT为PDF
  15. iPad横竖屏代码适配
  16. PHP域名授权查询源码,域名授权系统V1.2完整PHP源码下载_域名授权正版查询系统_源码完全开源...
  17. 关于移植人脸识别功能到linux开发板
  18. 等红灯时使用车轱辘扫描车牌
  19. c语言实训报告 需求分析,软件需求实验报告2(软件功能描述与确认)
  20. 内涵外延发生巨变的嵌入式技术,未来如何发展?

热门文章

  1. 亚马逊无货源店群模式优势在哪?
  2. windows - 摄像头采集
  3. 基于Unity的自动驾驶模拟总结(Apollo)
  4. 教改论文 计算机,大学计算机教育教改论文论文
  5. 环境变量与命令行参数
  6. StarUML-UML图表绘制利器
  7. 微软Zune闰年bug 分析
  8. 电脑桌面云便签怎么修改账号登录密码?
  9. JAVA面向对象课堂总结
  10. CTF常用工具_实时更新