gpt4 book ai didi

android - EditText中的DrawableButton可以显示/隐藏密码并更改DrawableEnd

转载 作者:行者123 更新时间:2023-12-02 13:28:44 24 4
gpt4 key购买 nike

这是activity_register.xml:

<EditText
android:id="@+id/editTextTextPassword"
android:layout_width="346dp"
android:layout_height="49dp"
android:layout_marginTop="32dp"
android:drawableStart="@drawable/ic_vpn_key"
android:drawableEnd="@drawable/ic_visibility"
android:ems="10"
android:hint="@string/password_hint"
android:inputType="textPassword"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.502"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editTextTextEmailAddress" />
所以,
我有密码 EditText password edittext with drawable
单击 drawableEnd时,您应该看到密码,而drawable应该更改为另一个密码,然后再次隐藏密码。
我找到了可以显示密码的教程->有效
__________________________更改可绘制对象->无效
但是,我在kotlin的可绘制对象中没有找到有关 onClickListener的教程
问题简短
如果单击了可绘制对象,则代码显示密码,如果再次单击则再次隐藏密码。

最佳答案

您需要的是Material Componenets中的 TextInputLayout
这是您的操作方式:

  • 在build.gradle(app)文件中实现 Material 库为:
    implementation 'com.google.android.material:material:1.3.0-alpha01'
  • 然后,将XML的EditText更改为
    <com.google.android.material.textfield.TextInputLayout
    android:id="@+id/passwordLayout"
    style="@style/TextInputLayoutAppearanceFilled"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:hint="@string/password"

    app:endIconMode="password_toggle" //This is used to set the password toggle behavior

    app:startIconDrawable="@drawable/ic_lock_black_24dp">

    <com.google.android.material.textfield.TextInputEditText
    android:id="@+id/password"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="textPassword"
    android:textSize="@dimen/_12ssp" />

    </com.google.android.material.textfield.TextInputLayout>
  • 然后,在styles.xml中根据需要更改样式:
     <style name="TextInputLayoutAppearanceFilled" parent="Widget.MaterialComponents.TextInputLayout.FilledBox">
    <item name="hintTextAppearance">@style/HintText</item>
    <item name="helperTextTextAppearance">@style/HelperText</item>

    <item name="android:textColor">@color/dark_grey</item>
    <item name="android:textColorHint">@color/color</item>
    <item name="hintTextColor">@color/color</item>
    <item name="boxStrokeColor">@color/color</item>
    <item name="startIconTint">@color/color</item>
    <item name="endIconTint">@color/color</item>
    <item name="boxBackgroundColor">@color/white</item>

    <item name="boxCornerRadiusBottomEnd">@dimen/_26sdp</item>
    <item name="boxCornerRadiusBottomStart">@dimen/_26sdp</item>
    <item name="boxCornerRadiusTopEnd">@dimen/_26sdp</item>
    <item name="boxCornerRadiusTopStart">@dimen/_26sdp</item>

    <item name="boxStrokeWidthFocused">0dp</item>

    <!--This destroys the visible layout in layout editor so first
    comment this out to design-->
    <!--<item name="boxStrokeWidth">0dp</item>-->

    <item name="hintEnabled">true</item>

    </style>
  • 这是输出的样子:
    enter image description here

  • 密码开关将完全按照您的要求工作,并且图标也将更改为另一个。您可以根据需要进一步对其进行自定义,请先查看官方文档- TextInputLayout

    关于android - EditText中的DrawableButton可以显示/隐藏密码并更改DrawableEnd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62603036/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com