热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

菜鸟的安卓实习之路----关于EditText的最大长度maxLength和密码类型InputType的获取

当在xml文件中声明了一个EditText的时候,可能会加入这个属性1希望这个EditText最多可以输入几位应该假如这段代码android:maxLength"4"当

当在xml文件中声明了一个EditText 的时候,可能会加入这个属性

1 希望这个EditText 最多可以输入几位 应该假如这段代码

android:maxLength="4" 

当希望这个editText 的长度初始化为几个字符长度的时候,假如这段代码android:ems="10

那么想要在程序中获取这两个值的时候怎么办呢,有点麻烦了。

下面给出代码,以获取最大显示长度为例吧: 

public int getMaxLength()
{
int length =0;
try
{
InputFilter[] inputFilters = getFilters();
for(InputFilter filter:inputFilters)
{
Class c = filter.getClass();
if(c.getName().equals("android.text.InputFilter$LengthFilter"))
{
Field[] f = c.getDeclaredFields();
for(Field field:f)
{
if(field.getName().equals("mMax"))
{
field.setAccessible(true);
length = (Integer)field.get(filter);
}
}
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
mMaxLength = length;
return length;
}
这里面要用到Inputfilter ,然后再这些筛选条件中去找,找到你要的那个条件就ok了

2 当你希望这个文本框输入密码的时候,要加入这样的条件

 android:inputType="textPassword" 
不要用password="true" ,out了

那么想要在程序里面获取这个属性的时候应该怎么写呢? 

看这段代码吧,别管什么意思,不大容易看明白,肯定是可以的

/**
* judge wether the editTextView's inputType is password or normal
*
**/
public boolean isPasswordType()
{
int inputType = this.getInputType();
final int variation =
inputType & (EditorInfo.TYPE_MASK_CLASS | EditorInfo.TYPE_MASK_VARIATION);
return variation
== (EditorInfo.TYPE_CLASS_TEXT | EditorInfo.TYPE_TEXT_VARIATION_PASSWORD)
|| variation
== (EditorInfo.TYPE_CLASS_TEXT | EditorInfo.TYPE_TEXT_VARIATION_WEB_PASSWORD)
|| variation
== (EditorInfo.TYPE_CLASS_NUMBER | EditorInfo.TYPE_NUMBER_VARIATION_PASSWORD);
}
这样就可以判断了,这个函数我也是在 textView 中找到的。





推荐阅读
author-avatar
子晴一-夏
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有