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

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

android:maxLength=”4 

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

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

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

 

**[html]** [view plain](http://blog.csdn.net/rually/article/details/38442539#)[copy](http://blog.csdn.net/rually/article/details/38442539#)[![在CODE上查看代码片](https://code.csdn.net/assets/CODE_ico.png)](https://code.csdn.net/snippets/446039)[![派生到我的代码片](https://code.csdn.net/assets/ico_fork.svg)](https://code.csdn.net/snippets/446039/fork)
  <div>
  </div>
</div>
- <span style="color: black;">public int getMaxLength()  </span>

- <span style="color: black;">{  </span>

- <span style="color: black;">    int <span class="attribute" style="color: red;">length</span> =<span class="attribute-value" style="color: blue;"></span>;  </span>

- <span style="color: black;">    try   </span>

- <span style="color: black;">    {  </span>

- <span style="color: black;">        InputFilter[] <span class="attribute" style="color: red;">inputFilters</span> = <span class="attribute-value" style="color: blue;">getFilters</span>();  </span>

- <span style="color: black;">        for(InputFilter filter:inputFilters)  </span>

- <span style="color: black;">        {  </span>

- <span style="color: black;">            Class<span class="tag" style="font-weight: bold; color: #993300;"><?</span><span class="tag" style="font-weight: bold; color: #993300;">></span> <span class="attribute" style="color: red;">c</span> = <span class="attribute-value" style="color: blue;">filter</span>.getClass();  </span>

- <span style="color: black;">            if(c.getName().equals(&#8220;android.text.InputFilter$LengthFilter&#8221;))  </span>

- <span style="color: black;">            {  </span>

- <span style="color: black;">                Field[] <span class="attribute" style="color: red;">f</span> = <span class="attribute-value" style="color: blue;">c</span>.getDeclaredFields();  </span>

- <span style="color: black;">                for(Field field:f)  </span>

- <span style="color: black;">                {  </span>

- <span style="color: black;">                    if(field.getName().equals(&#8220;mMax&#8221;))  </span>

- <span style="color: black;">                    {  </span>

- <span style="color: black;">                        field.setAccessible(true);  </span>

- <span style="color: black;">                        <span class="attribute" style="color: red;">length</span> = (Integer)field.get(filter);  </span>

- <span style="color: black;">                    }  </span>

- <span style="color: black;">                }  </span>

- <span style="color: black;">            }  </span>

- <span style="color: black;">        }  </span>

- <span style="color: black;">    }  </span>

- <span style="color: black;">    catch (Exception e)   </span>

- <span style="color: black;">    {  </span>

- <span style="color: black;">        e.printStackTrace();  </span>

- <span style="color: black;">    }  </span>

- <span style="color: black;">    <span class="attribute" style="color: red;">mMaxLength</span> = <span class="attribute-value" style="color: blue;">length</span>;  </span>

- <span style="color: black;">    return length;  </span>

- <span style="color: black;">}  </span>

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

 

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

**[html]** [view plain](http://blog.csdn.net/rually/article/details/38442539#)[copy](http://blog.csdn.net/rually/article/details/38442539#)[![在CODE上查看代码片](https://code.csdn.net/assets/CODE_ico.png)](https://code.csdn.net/snippets/446039)[![派生到我的代码片](https://code.csdn.net/assets/ico_fork.svg)](https://code.csdn.net/snippets/446039/fork)
  <div>
  </div>
</div>
- <span style="color: black;"><span class="attribute" style="color: red;">android:inputType</span>=<span class="attribute-value" style="color: blue;">&#8220;textPassword&#8221;</span>   </span>

不要用password=”true” ,out了

 

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

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

 

**[html]** [view plain](http://blog.csdn.net/rually/article/details/38442539#)[copy](http://blog.csdn.net/rually/article/details/38442539#)[![在CODE上查看代码片](https://code.csdn.net/assets/CODE_ico.png)](https://code.csdn.net/snippets/446039)[![派生到我的代码片](https://code.csdn.net/assets/ico_fork.svg)](https://code.csdn.net/snippets/446039/fork)
  <div>
  </div>
</div>
- <span style="color: black;">/**  </span>

- <span style="color: black;"> * judge wether the editTextView&#8217;s inputType is password or normal    </span>

- <span style="color: black;"> *   </span>

- <span style="color: black;"> **/      </span>

- <span style="color: black;">public  boolean isPasswordType()  </span>

- <span style="color: black;">{  </span>

- <span style="color: black;">    int <span class="attribute" style="color: red;">inputType</span> = <span class="attribute-value" style="color: blue;">this</span>.getInputType();  </span>

- <span style="color: black;">       final int <span class="attribute" style="color: red;">variation</span> =  </span>

- <span style="color: black;">               <span class="attribute-value" style="color: blue;">inputType</span> & (EditorInfo.TYPE_MASK_CLASS | EditorInfo.TYPE_MASK_VARIATION);  </span>

- <span style="color: black;">       return <span class="attribute" style="color: red;">variation</span>  </span>

- <span style="color: black;">               == (EditorInfo.TYPE_CLASS_TEXT | EditorInfo.TYPE_TEXT_VARIATION_PASSWORD)  </span>

- <span style="color: black;">               || <span class="attribute" style="color: red;">variation</span>  </span>

- <span style="color: black;">               == (EditorInfo.TYPE_CLASS_TEXT | EditorInfo.TYPE_TEXT_VARIATION_WEB_PASSWORD)  </span>

- <span style="color: black;">               || <span class="attribute" style="color: red;">variation</span>  </span>

- <span style="color: black;">               == (EditorInfo.TYPE_CLASS_NUMBER | EditorInfo.TYPE_NUMBER_VARIATION_PASSWORD);  </span>

- <span style="color: black;">}  </span>

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

💬 评论