当在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 中找到的。