EditText 实现密码可见与不可见

效果图

在这里插入图片描述
在这里插入图片描述

布局代码

 <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/tv_account_hint"
            style="@style/create_account_left"
            android:text="@string/team_set_account_string"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <EditText
            android:id="@+id/ed_account"
            style="@style/create_account_edit_right"
            android:hint="@string/team_set_account_hint_string"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toEndOf="@+id/tv_account_hint"
            app:layout_constraintTop_toTopOf="parent" />

        <View
            style="@style/create_account_line"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/tv_account_hint" />

        <TextView
            android:id="@+id/tv_password_hint"
            style="@style/create_account_left"
            android:text="@string/team_set_pwd_string"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/tv_account_hint" />

        <EditText
            android:id="@+id/ed_password"
            style="@style/create_account_edit_right"
            android:inputType="textPassword"
            android:hint="@string/team_set_password_hint_string"
            app:layout_constraintEnd_toStartOf="@+id/iv_pwd_eye"
            app:layout_constraintStart_toEndOf="@+id/tv_password_hint"
            app:layout_constraintTop_toBottomOf="@+id/ed_account" />

        <ImageView
            android:id="@+id/iv_pwd_eye"
            android:layout_width="@dimen/dm048"
            android:layout_height="@dimen/dm048"
            android:layout_marginTop="@dimen/dm024"
            android:layout_marginRight="@dimen/dm024"
            android:scaleType="fitXY"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toEndOf="@+id/ed_password"
            app:layout_constraintTop_toBottomOf="@+id/ed_account"
            tools:src="@drawable/vip_score_see_off" />

        <View
            style="@style/create_account_line"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/tv_password_hint" />


        <TextView
            android:id="@+id/tv_sure_hint"
            style="@style/create_account_left"
            android:text="@string/team_sure_pwd_string"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/tv_password_hint" />

        <EditText
            android:id="@+id/ed_password_again"
            style="@style/create_account_edit_right"
            android:hint="@string/team_again_pwd_string"
            android:inputType="textPassword"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toEndOf="@+id/tv_sure_hint"
            app:layout_constraintTop_toBottomOf="@+id/ed_password" />

        <ImageView
            android:id="@+id/iv_pwd_again_eye"
            android:layout_width="@dimen/dm048"
            android:layout_height="@dimen/dm048"
            android:layout_marginTop="@dimen/dm024"
            android:layout_marginRight="@dimen/dm024"
            android:scaleType="fitXY"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toEndOf="@+id/ed_password"
            app:layout_constraintTop_toBottomOf="@+id/ed_password"
            tools:src="@drawable/vip_score_see_off" />

       
    </androidx.constraintlayout.widget.ConstraintLayout>


style 引用

    <!--创建账号 右边-->
    <style name="create_account_edit_right">
        <item name="android:layout_width">@dimen/dm000</item>
        <item name="android:layout_height">@dimen/dm096</item>
        <item name="android:layout_marginLeft">@dimen/dm040</item>
        <item name="android:background">@null</item>
        <item name="android:ellipsize">end</item>
        <item name="android:gravity">center_vertical</item>
        <item name="android:singleLine">true</item>
        <item name="android:paddingRight">@dimen/dm024</item>
        <item name="android:textColor">@color/color_999</item>
        <item name="android:textSize">@dimen/dm032</item>
    </style>

        <!--创建账号 左边-->
    <style name="create_account_left">
        <item name="android:layout_width">@dimen/dm162</item>
        <item name="android:layout_height">@dimen/dm096</item>
        <item name="android:gravity">center_vertical</item>
        <item name="android:textColor">@color/color_19</item>
        <item name="android:layout_marginLeft">@dimen/dm032</item>
        <item name="android:textSize">@dimen/dm032</item>
    </style>

代码

		//设置默认图
        setSye(binding.ivPwdEye, false)
        setSye(binding.ivPwdAgainEye, false)

		//点击事件
        binding.ivPwdEye.setOnClickListener {
            setEysSee(binding.edPassword, binding.ivPwdEye)
        }
        binding.ivPwdAgainEye.setOnClickListener {
            setEysSee(binding.edPasswordAgain, binding.ivPwdAgainEye)
        }



    /**
     * 密码是否可见
     * 1 明文
     */
    private fun setEysSee(editText: EditText, imageView: ImageView) {
        if (editText.inputType == 1) {
            editText.inputType = InputType.TYPE_TEXT_VARIATION_PASSWORD or InputType.TYPE_CLASS_TEXT
        } else {
            editText.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_NORMAL
        }
        setSye(imageView, editText.inputType == 1)
        //光标位置
        editText.setSelection(editText.text.toString().length)
    }

    private fun setSye(imageView: ImageView, isSee: Boolean) {
        imageView.background = resources.getDrawable(if (isSee) R.drawable.vip_score_see_on else R.drawable.vip_score_see_off)
    }

就可以实现OK了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值