Android密码可见性切换无法与支持库25一起使用?

Cuc*_*lus 8 passwords android android-support-library textinputlayout

我已经以通常的方式使用密码字段实现了TextInputLayout:

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <EditText
        android:id="@+id/returning_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/prompt_password"
        android:inputType="textPassword"
        android:maxLines="1"
        android:textSize="14sp" />

</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

这在使用Android版本24.0.2的Android支持库时工作正常,但在切换到25.0.1之后:

compile 'com.android.support:design:25.0.1'
compile 'com.android.support:support-v4:25.0.1'
compile 'com.android.support:appcompat-v7:25.0.1'
compile 'com.android.support:support-vector-drawable:25.0.1'
Run Code Online (Sandbox Code Playgroud)

我不再在窗口小部件中看到密码可见性切换(也称为"眼睛图标").更改到最新版本25.1.0不能解决此问题.

是否有任何我错过的,需要与支持库25一起更改,或者这可能是Android问题?

H.P*_*.P. 28

试试这种方式.

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

<EditText
    android:id="@+id/returning_password"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/prompt_password"
    android:inputType="textPassword"
    android:maxLines="1"
    android:textSize="14sp" />

</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

这可能对你有所帮助!!

现在默认情况下禁用TextInputLayout密码切换,以避免不必要地覆盖开发人员指定的最终drawable.它可以通过passwordToggleEnabled XML属性手动启用.

最近的支持库修订


ind*_*oti 5

如果你使用 Jetpack 那么

添加这些依赖项

implementation 'com.google.android.material:material:1.0.0'
Run Code Online (Sandbox Code Playgroud)

并添加 app:passwordToggleEnabled="true"xml 和另外一件事,使用inputType= textPassword,如果您使用而不是这个,则不会显示切换按钮。

而不是使用

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

<EditText
    android:id="@+id/returning_password"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/prompt_password"
    android:inputType="textPassword"
    android:maxLines="1"
    android:textSize="14sp" />

</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

,你需要使用

<com.google.android.material.textfield.TextInputLayout
 android:layout_width="match_parent"
   android:layout_height="wrap_content"
   app:passwordToggleEnabled="true">

<EditText
    android:id="@+id/returning_password"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/prompt_password"
    android:inputType="textPassword"
    android:maxLines="1"
    android:textSize="14sp" />

</com.google.android.material.textfield.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

  • 对于那些将应用程序迁移到 androidx 的人来说,答案非常有用。谢谢 (2认同)