14

我以通常的方式实现了一个带有密码字段的 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>

这在使用最高版本 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'

我不再在小部件中看到密码可见性切换(又名“眼睛图标”)。更改为最新版本 25.1.0 并不能解决此问题。

有什么我错过的并且需要结合支持库 25 进行更改,或者这可能是 Android 问题吗?

4

4 回答 4

42

试试这个方法。

<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>

这可能对你有帮助!!

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

最近的支持库修订

于 2016-12-29T17:36:48.130 回答
5

如果你使用 Jetpack 那么

添加这些依赖项

implementation 'com.google.android.material:material:1.0.0'

并添加 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>

,你需要使用

<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>
于 2019-02-21T11:08:38.150 回答
3

您不需要添加以下内容:

app:passwordToggleEnabled="true"

只需将您的依赖项更改为:

compile 'com.android.support:design:25.0.0'

这也是我在更新依赖项时遇到的相同错误。

编辑:

现在

app:passwordToggleEnabled="true"

正在与,

compile 'com.android.support:design:25.3.0'
于 2017-01-18T09:50:41.637 回答
1
<android.support.design.widget.TextInputLayout
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   app:passwordToggleEnabled="true">

应用程序:passwordToggleEnabled="true">

<EditText
    android:id="@+id/edt_password"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="Password"
    android:inputType="textPassword"
    android:maxLines="1"
    android:textSize="16sp" />

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

编译'com.android.support:design:25.0.1'

编译'com.android.support:support-v4:25.0.1'

编译'com.android.support:appcompat-v7:25.0.1'

编译'com.android.support:support-vector-drawable:25.0.1'

于 2017-07-13T07:50:47.143 回答