越来越多的电商应用的支付密码仿照微信那样的设置,早前项目中需要写了一个。今天得空整理一下思路发表出来供大家参考。
首先从布局说起,我将布局分成一个linearlayout,平分成了6份,每一个里边是一个imageview,中间用textview分割开。然后再盖上一个edittext,以供调出键盘,盛放输入的内容,并监听输入的长度来控制显示的图片个数。大致思路就是这样,下边来看实现过程。
1、布局:
2、代码实现
代码实现很简单,就是监听edittext的输入 来控制图片的显示隐藏
首先,获取到6个imageview和edittext。然后将6个imageview按照顺序装入一个容器,比如一个list。
然后写一个方法控制imageview的显示,很简单:
从0到输入的长度的位置为显示,从输入的长度的位置到最后为隐藏
private void setVisibility(List<ImageView> views, int length) {
for (int i = 0; i < length; i++) {
views.get(i).setVisibility(View.VISIBLE);
}
for (int i = length; i < views.size(); i++) {
views.get(i).setVisibility(View.INVISIBLE);
}
}
有了上面那些,接下来就是对edittext添加监听
et.addTextChangedListener(this);
会重写三个方法,看着方法名字就知道变化前,变化时,变化后。我们只用在其中一个方法里边调用我们写的控制imageview显示隐藏的方法就行。有没有很简单
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
setVisibility(imgs,et.getText().toString().length());
}
最后ps:1、需要注意的是edittext一定要放在上边,不然事件分发不到他,调不出键盘。
2、edittext一定要设置android:cursorVisible="false",隐藏光标,要不就能看到光标在移动
3、android:textColor="@android:color/transparent",将字体颜色设置为透明的