如何使用 PasswordToggleEnabled 将 DrawableLeft 设置为 EditText

How to set a DrawableLeft to an EditText with PasswordToggleEnabled

我用DrawableLeft作为图标为PasswordField做了一个TextInputEditText,然后我添加了一个PasswordToggleEnabled(true)..这个操作已经删除或隐藏我的 DrawableLeft,这是我的代码:

<android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:passwordToggleContentDescription="Show Password"
        app:passwordToggleEnabled="true"
        app:hintEnabled="false"
        android:id="@+id/signupPasswordlayout"
        app:passwordToggleTint="@color/edittexttint">
        <android.support.design.widget.TextInputEditText
            android:hint="Password"
            android:id="@+id/signupPassword"
            android:drawableLeft="@drawable/ic_password"
            android:drawablePadding="10dp"
            android:inputType="textPassword"
            android:drawableTint="@color/edittexttint"
            android:textSize="15sp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
        </android.support.design.widget.TextInputLayout>

所以,是否可以同时显示(PasswordToggleDrawableLeft?)谢谢!

我以前从未见过这种确切的行为,但查看 TextInputLayout 的源代码时,它确实在为密码切换应用占位符可绘制对象时尝试保留用户设置的可绘制对象。然而,就像它适用的支持库中的大多数其他内容一样,它使用相对位置处理它们 - 即 startend - 而不是绝对 - leftright.

支持库一直因破坏任何指定绝对方向或位置的内容而臭名昭著,因此这也是这里的问题也就不足为奇了。

只需将您设置的属性更改为 drawableStart,而不是 drawableLeft。对于涉及使用支持库选择绝对或相对位置和方向的任何其他内容,也请记住这一点。