Android开发学习

Android设置密码的明文与暗文

2019-11-15  本文已影响0人  小小程序员jh

因为项目中用到了这块,所以记录一下!
先看下需要实现的效果:


实际.png

先看下布局排版,RelativeLayout里面放置一个ImageView、一个EditText, 一个CheckBox,用作显示的密码编辑一栏。
下面是xml的布局:

 <RelativeLayout
        android:layout_marginTop="@dimen/marginSize_10dp"
        android:layout_width="match_parent"
        android:layout_height="@dimen/height_50dp">

        <ImageView
            android:layout_centerVertical="true"
            android:id="@+id/iv_ct_pwd"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:src="@drawable/ct_login_pwd"
            android:textColor="@color/color_gray"
            android:textSize="@dimen/tv_16sp" />

        <com.jxaic.wsdj.utils.LastInputEditText
            android:layout_toLeftOf="@+id/cb_pwd_tips"
            android:layout_marginLeft="@dimen/marginSize_10dp"
            android:layout_toRightOf="@+id/iv_ct_pwd"
            android:id="@+id/et_acc_pwd"
            android:layout_width="match_parent"
            style="@style/et_style_normal"
            android:inputType="textPassword"
            android:text=""
            android:hint="@string/et_ct_login_hint_pwd"
            android:textSize="@dimen/tv_16sp" />
        
        <CheckBox
            android:layout_marginRight="@dimen/marginSize_5dp"
            android:checked="false"
            android:id="@+id/cb_pwd_tips"
            android:layout_width="wrap_content"
            android:layout_height="@dimen/marginSize_30dp"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:button="@drawable/selector_password"/>

    </RelativeLayout>

其中CheckBox@drawable/selector_password样式如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/icon_pwd_show" android:state_checked="true" />
    <item android:drawable="@drawable/icon_pwd_hide" android:state_checked="false" />
</selector>

这里是2个图标,如下:


icon_pwd_hide.png icon_pwd_show.png

接下来是具体的代码实现:

 cbPwdTips.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked){
                    etAccountPwd.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
                }else {
                    etAccountPwd.setTransformationMethod(PasswordTransformationMethod.getInstance());
                }
                etAccountPwd.setSelection(etAccountPwd.getText().length());  
            }
        });

自己也是查看网上的设置的明暗文显示方式,也记录一下,

 // 方式一:
// 显示明文、暗文
// 选择状态 显示明文--设置为可见的密码
etAccountPwd.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
 //默认状态显示密码--设置文本 要一起写才能起作用 InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD
etAccountPwd.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
// 第二种方式:
// 明文
etAccountPwd.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
// 暗文
etAccountPwd.setTransformationMethod(PasswordTransformationMethod.getInstance());

以上就是实现的例子了。
参考文章:

上一篇下一篇

猜你喜欢

热点阅读