maxlength不起作用android,Android EditText设置Filter以后(xml布局文件中maxLength不起作用的解决办法)...
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不起作用的解决办法)...相关推荐
- Android布局文件中的xmlns:tools作用以及用法
最近被布局文件中的 xmlns:tools="http://schemas.android.com/tools" xmlns:lu="http://schemas.and ...
- android xml ignore,工具:ignore =“UselessParent”是什么意思在Android XML布局文件中?...
在你的情况 tools:ignore="UselessParent" 告诉你的IDE,以避免显示如下消息:"这RelativeLayout的布局或它的LinearLayo ...
- Android View 动态加载不同xml布局文件
以下代码可做参考, 主要是需要先removeAllViews(),在这里卡了会. public class BottomBar extends LinearLayout {private Contex ...
- Android中measure过程、WRAP_CONTENT详解以及 xml布局文件解析流程浅析
转自:http://www.uml.org.cn/mobiledev/201211221.asp 今天,我着重讲解下如下三个内容: measure过程 WRAP_CONTENT.MATCH_PAREN ...
- Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(下)
本文原创, 转载请注明出处:http://blog.csdn.net/qinjuning 上篇文章<<Android中measure过程.WRAP_CONTENT详解以及xml布局文 ...
- 【Android 安装包优化】Tint 着色器 ( 简介 | 布局文件中的 Tint 着色器基本用法 | 代码中使用 Tint 着色器添加颜色效果 )
文章目录 一.Tint 着色器简介 二.布局文件中的 Tint 着色器基本用法 三.代码中使用 Tint 着色器添加颜色效果 四.参考资料 一.Tint 着色器简介 Tint 着色器的作用是是 可以使 ...
- Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(上)
在之前一篇博文中<< Android中View绘制流程以及invalidate()等相关方法分析>> ,简单的阐述 了 Android View 绘制流程的三个步骤,即: 1. ...
- Android在Activity中动态增加xml自定义样式布局控件(引用xml布局文件和循环增加控件)
工程目录: MainActivity package com.example.test1121;import androidx.appcompat.app.ActionBar; import andr ...
- 【Android】安卓布局文件中xmlns属性
定义及使用 xmlns是XML Namespaces的缩写,中文名称是XML(标准通用标记语言的子集)命名空间 自定义View的时候有时候会在布局文件中使用到 命名规则如下: xmlns:前缀=htt ...
最新文章
- 深入理解ceph-disk prepare 源码逻辑
- [LeetCode] Remove Element
- linux7开启ipmi,通过IPMI安装CentOS7教程
- golang函数:命名返回值代码示例
- .NET Core中使用结果过滤器ResultFilter统一结果返回封装
- 访问控制列表(二)配置命令
- 岚图FREE店内静态体验
- rto净化效率计算公式_旋转式RTO,催化燃烧设备,在各行业的应用及优势
- 【学习OpenCV4】几何图形的绘制方法
- python socket recvfrom 超时捕获_python-udp客户端超时机制
- 电信单线实现上网加看电视 HS8145V +K2P华硕固件
- 计算机考研408每日一题 day160
- 自定义形状的ImageView制作
- python将pdf转成excel_wpspdf转换成excel Python转换PPT为PDF
- iPad横竖屏代码适配
- PHP域名授权查询源码,域名授权系统V1.2完整PHP源码下载_域名授权正版查询系统_源码完全开源...
- 关于移植人脸识别功能到linux开发板
- 等红灯时使用车轱辘扫描车牌
- c语言实训报告 需求分析,软件需求实验报告2(软件功能描述与确认)
- 内涵外延发生巨变的嵌入式技术,未来如何发展?