Android:EditText设置密码可见与不可见

Android:EditText设置密码可见与不可见

急的看这里,直接在点击事件中设置EditText的密码可见与不可见属性:

et_password.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); //密码可见

et_password.setTransformationMethod(PasswordTransformationMethod.getInstance());//密码不可见

正文:

(参考https://blog.csdn.net/song_74110/article/details/69240506)

刚开始我是修改EditText的inputType,这个就是EditText的输入模式。我之前也是想修改这个inputType的,这个在xml里面修改可以,代码是这样的:android:inputType=”textPassword”(密码不可见)android:inputType=”textVisiblePassword”( 可见密码) 有两种模式。但是想在java代码里面动态修改貌似改显示与不可见,貌似只能从可见模式转为可见模式,但是转不回去。若有大神可以从可见模式转为不可见模式的告诉我哈,我也学习学习-_-代码如下:

动态修改inputType

//从密码不可见模式变为密码可见模式(行得通)

et_password.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

//从密码可见模式变为密码不可见模式(行不通)

et_password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);

我也阅读InputType里面的源码,也没发现inputType从密码不可见模式可以转为可见模式 inputType里面的部分源码说明如下如下:

/**

* Variation of {@link #TYPE_CLASS_TEXT}: entering a password, which should

* be visible to the user.

*/

public static final int TYPE_TEXT_VARIATION_VISIBLE_PASSWORD = 0x00000090;

/**

* Variation of {@link #TYPE_CLASS_TEXT}: entering a password.

*/

public static final int TYPE_TEXT_VARIATION_PASSWORD = 0x00000080;

解决方法 :动态修改TransformationMethod

//从密码不可见模式变为密码可见模式

et_password.setTransformationMethod(HideReturnsTransformationMethod.getInstance());

//从密码可见模式变为密码不可见模式

et_password.setTransformationMethod(PasswordTransformationMethod.getInstance());

下面来一个小demo

效果图:

xml布局文件 一个线性布局里面左右各方一个ImageButton,中间放一个EditText,图片自己找喔

android:layout_width="match_parent"

android:layout_height="40dp"

android:layout_marginLeft="20dp"

android:layout_marginRight="20dp"

android:layout_marginTop="10dp"

android:background="@drawable/login_background"

android:gravity="center_vertical"

android:orientation="horizontal">

android:layout_width="20dp"

android:layout_height="25dp"

android:layout_marginLeft="10dp"

android:src="@drawable/icon_coupon" />

android:id="@+id/et_password"

android:layout_width="0dp"

android:layout_height="match_parent"

android:layout_weight="1"

android:background="@android:color/transparent"

android:hint="@string/input_password"

android:imeOptions="actionDone"

android:inputType="textPassword"

android:paddingLeft="5dp"

android:textColor="@color/black"

android:textSize="16sp" />

android:id="@+id/iv_eye"

android:layout_width="20dp"

android:layout_height="25dp"

android:layout_marginRight="10dp"

android:layout_marginLeft="10dp"

android:src="@drawable/icon_eye" />

上面的LinearLayout的background com_btn_background.xml如下:

android:width="1.0dp"

android:color="#ededed" />

LinearLayout右边的图片有一个选择器selector icon_eye.xml如下(图片自己找哈):

java代码如下:

private EditText et_password;

private ImageView ivEye;

private boolean isOpenEye = false;

//绑定id

et_password = (EditText) v.findViewById(R.id.et_password);

ivEye = (ImageView) v.findViewById(R.id.iv_eye);

//密码是否可见

ivEye.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

if(!isOpenEye) {

ivEye.setSelected(true);

isOpenEye = true;

//密码可见

et_password.setTransformationMethod(HideReturnsTransformationMethod.getInstance());

}else{

ivEye.setSelected(false);

isOpenEye = false;

//密码不可见

et_password.setTransformationMethod(PasswordTransformationMethod.getInstance());

}

}

});

相关数据