密码控件passwordView及其分析

1.做app,尤其是金融类的app,往往都会涉及到支付密码这块,并且支付密码几乎都是6个数字,1个数字占一个区域,6个数字占满整个区域,并且每个数字占得大小是相等的,类似于以下的样子

2. 那么怎么样才能做出这样一个控件呢,可以看到每个数字是等大小的,并且是会显示在中间的

3.我们在考虑的时候肯定是输入东西,第一控件就是EditText,因为这个控件是支持输入的。但是我们要求的刚好6个数字,并且是一个个数字都在框的中间的,距离是等距的,这时候就会发现EditText不是很适合这个。

4.最好的等距方法就是一个LInearLayout里面放6个EditText,每个EditText设置weight="1",这样至少6个框就出来了,而且设置gravity="center",字也能在中间了,但是,每个EditText是能输入很多字 的,那么设置每个Editext只能输入一个字呢,基本满足要求了,但是这个不会说你第一个Editext输入了数字就能自动跳到第二个输入框的。所以这里得解决这个问题,我们可以设置一个框来获取输入值,后面都是前面这个框设置TextWatch监听来获取输入值,然后用代码给后面的框里设置好数字就ok了,看起来就像数字是一个输进去的,而且一个个的展示出来了

5. 还有一个,一般这个控件出来后,会自动弹出软键盘,并且,看不到游标,弹出软键盘,只要设置获取焦点,并且给这个自定义的view设置点击事件,来控制软键盘的显示和隐藏,游标的话

<item name="android:cursorVisible">false</item>

就不会显示了

         6.其实这时候会发现后面5个控件,不一定得是Editext,也可以是TextView,效果一样

7.基本设计思路是这样的。这边在github上有个别人的较好的,这里是地址https://github.com/Jungerr/GridPasswordView,可以下载看看

8.针对上面这个开源项目进行分析:


项目运行之后大致如上,可以设置输入密码位数,还有可见不可见等等

<declare-styleable name="gridPasswordView">

    <attr name="gpvTextColor" format="color|reference" />
    <attr name="gpvTextSize" format="
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值