急的看这里,直接在点击事件中设置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()); } } });