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

本文介绍了如何在Android应用中通过编程方式获取EditText组件的最大输入长度及输入类型(普通文本或密码)。提供了具体实现代码,包括使用反射机制获取maxLength属性值的方法,以及判断EditText是否设置为密码输入模式的函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值