其他 · 2014年12月1日 0

关于EditText的最大长度maxLength和密码类型InputType的获取

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

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

android:maxLength=”4 

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

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

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

 

  1. public int getMaxLength()  
  2. {  
  3.     int length =0;  
  4.     try   
  5.     {  
  6.         InputFilter[] inputFilters = getFilters();  
  7.         for(InputFilter filter:inputFilters)  
  8.         {  
  9.             Class<?> c = filter.getClass();  
  10.             if(c.getName().equals(“android.text.InputFilter$LengthFilter”))  
  11.             {  
  12.                 Field[] f = c.getDeclaredFields();  
  13.                 for(Field field:f)  
  14.                 {  
  15.                     if(field.getName().equals(“mMax”))  
  16.                     {  
  17.                         field.setAccessible(true);  
  18.                         length = (Integer)field.get(filter);  
  19.                     }  
  20.                 }  
  21.             }  
  22.         }  
  23.     }  
  24.     catch (Exception e)   
  25.     {  
  26.         e.printStackTrace();  
  27.     }  
  28.     mMaxLength = length;  
  29.     return length;  
  30. }  

这里面要用到Inputfilter ,然后再这些筛选条件中去找,找到你要的那个条件就ok了

 

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

  1. android:inputType=“textPassword”   

不要用password=”true” ,out了

 

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

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

 

  1. /**  
  2.  * judge wether the editTextView’s inputType is password or normal    
  3.  *   
  4.  **/      
  5. public  boolean isPasswordType()  
  6. {  
  7.     int inputType = this.getInputType();  
  8.        final int variation =  
  9.                inputType & (EditorInfo.TYPE_MASK_CLASS | EditorInfo.TYPE_MASK_VARIATION);  
  10.        return variation  
  11.                == (EditorInfo.TYPE_CLASS_TEXT | EditorInfo.TYPE_TEXT_VARIATION_PASSWORD)  
  12.                || variation  
  13.                == (EditorInfo.TYPE_CLASS_TEXT | EditorInfo.TYPE_TEXT_VARIATION_WEB_PASSWORD)  
  14.                || variation  
  15.                == (EditorInfo.TYPE_CLASS_NUMBER | EditorInfo.TYPE_NUMBER_VARIATION_PASSWORD);  
  16. }  

这样就可以判断了,这个函数我也是在 textView 中找到的。

Share this: