Android EditText 之密码输入框显示和隐藏切换的实现

2022-07-29 10:29:48

用EditText作为密码输入框的时候,一般密文形式显示,直接在xml设置属性

android:inputType="textPassword"

即可。

有时候如下图所示,要增加密码的显示和隐藏切换功能
在这里插入图片描述
这个时候给那个小眼睛图标加上点击事件,来实现输入框在密文和明文两种状态间切换。一般有两种实现方式:

首先看看密文下软键盘的样式:
在这里插入图片描述

然后看看两种实现方式
第一种:

ivVisible.setOnClickListener{
                ivVisible.isSelected=!ivVisible.isSelectedif(ivVisible.isSelected){
                    etPassword.inputType= InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD}else{
                    etPassword.inputType= InputType.TYPE_CLASS_TEXTor InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD}
                etPassword.setSelection(etPassword.text?.length?:0)}

切换为明文时的软键盘样式:
在这里插入图片描述

第二种:

ivVisible.setOnClickListener{
                ivVisible.isSelected=!ivVisible.isSelectedif(ivVisible.isSelected){
                    etPassword.transformationMethod= HideReturnsTransformationMethod.getInstance()}else{
                    etPassword.transformationMethod= PasswordTransformationMethod.getInstance()}
                etPassword.setSelection(etPassword.text?.length?:0)}

切换为明文时的软键盘样式:
在这里插入图片描述
两种方式都能实现功能,但是交互上是不一样的,推荐使用第二种。原因是:第一种切换时,软键盘会在安全键盘切换成普通键盘,且软键盘有个收起和弹出的过程,体验上不佳,另外明文状态下可以输入中文,如果产品需求是不允许中文作为密码,那就基本可以放弃。反之,第二种方式就没有这些问题。

  • 作者:Acoe
  • 原文链接:https://blog.csdn.net/zhuyb829/article/details/122884315
    更新时间:2022-07-29 10:29:48