最近在做一个登录、注册页面,里面需要显示或隐藏密码,故做了一个简单的显示和隐藏功能。
关键类TextView.setTransformationMethod(TransformationMethod method),其中TransformationMethod 有两个子类:
关键代码:
@OnClick(R.id.iv_psw_eye) void clickPswEye() { int tag = Integer.parseInt(pswEyeIV.getTag().toString()); if (tag == 1) {//显示密码 pswEyeIV.setTag(2); pswEyeIV.setImageResource(R.mipmap.icon_psw_not_eye); passwordET.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); } else {//隐藏密码 pswEyeIV.setTag(1); pswEyeIV.setImageResource(R.mipmap.icon_psw_eye); passwordET.setTransformationMethod(PasswordTransformationMethod.getInstance()); } }
我用ImageView的Tag属性存储当前密码输入框的类型,1是密码类型,2是显示类型。布局组件关键代码如下:
<RelativeLayout android:layout_width="match_parent" android:layout_height="45dp" android:layout_gravity="center" android:layout_marginTop="26dp" android:background="@drawable/bg_edit_login" android:paddingLeft="26dp"> <EditText android:id="@+id/password_ET" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_toLeftOf="@+id/iv_psw_eye" android:background="@null" android:gravity="center_vertical" android:hint="请输入密码" android:inputType="textPassword" android:maxLines="1" android:textColor="@color/color_666666" android:textColorHint="@color/color_999999" android:textSize="13sp" /> <ImageView android:id="@+id/iv_psw_eye" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentRight="true" android:paddingLeft="20dp" android:paddingRight="26dp" android:src="@mipmap/icon_psw_eye" android:tag="1" /> </RelativeLayout>
截图: