【Android记录】【ToggleButton】简单使用

绝了,今天在使用【ToggleButton】控件的,时候,第一次点击一直没有效果,搞得我还以为出bug了,哎。。。记录一下,省得下次再出这种事情,太搞心态了。顺便记录一下使用方法
首先选择两张图片
i显示
隐藏
设置选择项

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

页面布局

        <ToggleButton
            android:id="@+id/toggle_last_pwd"
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:layout_marginEnd="10dp"
            android:background="@drawable/toggle_show_select"
            android:checked="false"
            android:textOff=""
            android:textOn="" />

项目代码
首先是错误代码,第一次点击按钮时无效

  //密码显示与隐藏
  //第一次点击时执行setOnClickListener 
        toggle_last_pwd.setOnClickListener {
            etShow(et_loginPwd, toggle_last_pwd)
        }
        
   private fun etShow(editText: EditText, toggleButton: ToggleButton) {
        Log.e("MAIN_THIS","点击了。。。。。")
        //第二次点击时才执行这段setOnCheckedChangeListener 
        toggleButton.setOnCheckedChangeListener { com, b ->
        //com和b这两个的状态是一致的,只需要使用一个进行判断就可以了
            Log.e("MAIN_THIS", " com is ${com.isChecked} , and b is $b")
            if (b) editText.transformationMethod =
                HideReturnsTransformationMethod.getInstance()
            else editText.transformationMethod = PasswordTransformationMethod.getInstance()
            editText.setSelection(editText.text.toString().length)
        }
    }

所以使用这个时,根本不应该使用【setOnClickListener】,应该直接使用【setOnCheckedChangeListener 】 ,所以正常代码就是

      //密码显示与隐藏
        toggle_last_pwd.setOnCheckedChangeListener { _, b ->
            et_loginPwd.apply {
                transformationMethod = if (b) HideReturnsTransformationMethod.getInstance()
                else PasswordTransformationMethod.getInstance()
                setSelection(this.text.toString().length)
            }
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值