如何自定义android passwordToggleDrawable

Hom*_*ian 2 android android-textinputlayout

Android支持库添加了TextInputLayout,添加了浮动标签和密码切换可访问性等几项功能

我的问题是如何自定义passwordVisisbilityDrawable,以便显示我自己的可见和隐藏状态图标.

此外,当我启用passwordToggleVisibility时,高度将增加.

Hom*_*ian 10

对于更改drawable,创建一个如下所示的选择器

password_toggle_drawable.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ic_password_visible" android:state_checked="true"/>
    <item android:drawable="@drawable/ic_password_hidden"/>
</selector>
Run Code Online (Sandbox Code Playgroud)

然后分配给TextInputLayout,如下所示:

<android.support.design.widget.TextInputLayout
    android:id="@+id/PasswordLayout"
    xmlns:android="http://schemas.android.com/apk/res/android"
    app:passwordToggleEnabled="true"
    **app:passwordToggleDrawable="@drawable/password_toggle_drawable"**
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <android.support.design.widget.CommonTextInputEditText
        android:id="@+id/PasswordEditText"
        android:padding="0dp"
        android:gravity="center"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPassword"/>
</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

对于身高,我在充气后使用下面的代码:

CheckableImageButton text_input_password_toggle = (CheckableImageButton) PasswordLayout().findViewById(android.support.design.R.id.text_input_password_toggle);
text_input_password_toggle.setMinimumHeight(0);
PasswordEditText().setMinHeight(0);
PasswordEditText().setMinimumHeight(0);
Run Code Online (Sandbox Code Playgroud)

  • 我还必须将 app:passwordToggleTint="@null" 添加到 TextInputLayout 中。我猜色调压倒了可绘制对象。在没有色调的情况下,正确的选择器可绘制对象显示已检查的真/假状态。 (2认同)