在 TextInputLayout 中同时启用 errorEnabled 和 passwordToggleEnabled

Enabling both errorEnabled and passwordToggleEnabled in a TextInputLayout

我想在 TextInputLayout 中将 errorEnabledpasswordToggleEnabled 都设置为 true,但是这两个似乎不能共存,因为一个覆盖另一个像 this.

我想这样做是因为我正在验证密码字段以匹配特定条件,并且我希望用户能够看到错误消息和输入的密码。

这是我的代码:

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:counterEnabled="true"
    app:errorEnabled="true"
    app:passwordToggleEnabled="true">

    <android.support.design.widget.TextInputEditText
        android:id="@+id/password_input"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/password"
        android:inputType="textPassword" />

</android.support.design.widget.TextInputLayout>

是否可以将 passwordToggle-icon 移到感叹号左侧一点?或者我是否必须创建一个自定义可绘制对象并使用它来代替 passwordToggle-icon?

尝试在 TextInputLayout 上设置 setError() 而不是 TextInputEditText

xml

<android.support.design.widget.TextInputLayout
    android:id="@+id/ti_input"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:counterEnabled="true"
    app:errorEnabled="true"
    app:passwordToggleEnabled="true">

    <android.support.design.widget.TextInputEditText
        android:id="@+id/password_input"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Password"
        android:inputType="textPassword" />

代码

    if(password_input.getText().toString().equals(""))
        ti_input.setError("Enter Password");
    else
        ti_input.setError(null);

这对我有用。不要在 EditText 上使用 setError(),使用 TextInputLayout 的 setError()