前言:密码框内容的隐藏和显示
想要实现的这个功能其实说难也不难,因为可以使用最土的方法对这个功能进行实现,
比如说,你可以用两张图片,一张显示,一张用来隐藏,然后给两张图片都添加一个点击事件,
对输入框的隐藏和显示进行处理也不是不行,不过的话,这样做会带来大量的代码,
也耗费了较大的时间。而用checkbox就可以快速实现这样的效果!
1.准备好布局文件
<LinearLayout
android:id="@+id/yanzhengma"
android:layout_marginTop="20dp"
android:layout_below="@id/tt_llayout"
android:layout_centerInParent="true"
android:layout_width="300dp"
android:layout_height="60dp"
android:background="@drawable/load_shape"
>
<ImageView
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:layout_width="35dp"
android:layout_height="35dp"
android:src="@drawable/mima"
/>
<EditText
android:id="@+id/new_password"
android:inputType="textPassword"
android:padding="10dp"
android:layout_width="200dp"
android:layout_height="45dp"
android:textColor="@color/colorWhite"
android:textSize="18sp"
android:layout_gravity="center"
android:hint="新密码"
android:background="@null"
android:textColorHint="@color/colorWhite"
/>
<CheckBox
android:id="@+id/eyes_checkbox"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:button="@drawable/checkbox_shape"
/>
</LinearLayout>
这里需要注意点的是:编辑框的InputType的设置和checkbox让其变为button的样式模式
2.准备两张图片放进selector里面
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/eyes_close" android:state_checked="false"></item>
<item android:drawable="@drawable/eyes_open" android:state_checked="true"></item>
</selector>
这里值得注意一下的是两种状态的改变false与true需要写清楚
3.设置监听,一开始时我并没有给其设置监听事件结果就出现那种输入框只有一种状态的效果,所以这里记得需要设置监听事件
eye_checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b)
{
if (eye_checkbox.isChecked())
{
new_password.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
}
else
{
new_password.setTransformationMethod(PasswordTransformationMethod.getInstance());
}
}
});
实现效果如下图: