Android 密码可见性切换不适用于支持库 25?

Posted

技术标签:

【中文标题】Android 密码可见性切换不适用于支持库 25?【英文标题】:Android password visibility toggle not working with support library 25? 【发布时间】:2017-05-13 23:57:50 【问题描述】:

我已经以通常的方式实现了一个带有密码字段的 TextInputLayout:

<android.support.design.widget.TextInputLayout
    android:layout_
    android:layout_>

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

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

这在使用 Android 支持库至 24.0.2 版时运行良好,但在切换到 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 问题吗?

【问题讨论】:

【参考方案1】:

试试这个方法。

<android.support.design.widget.TextInputLayout
   android:layout_
   android:layout_
   app:passwordToggleEnabled="true">

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

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

这可能对你有帮助!!

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

Recent Support Library Revisions

【讨论】:

完美答案,谢谢!这立即修复了它,下次库版本更新时我会密切关注该链接。 删除密码roboto默认字体使用android:typeface="normal" 如何使用支持库 23.4.0 实现相同的功能 有时图标可能是白色的,所以添加 app:passwordToggleTint="some color" 以提高可见性。【参考方案2】:

如果你使用 Jetpack 那么

添加这些依赖项

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

并在xml中添加app:passwordToggleEnabled="true" 还有一件事,使用 inputType= textPassword 如果你使用而不是这个,那么切换按钮将不会显示。

而不是使用

<android.support.design.widget.TextInputLayout
   android:layout_
   android:layout_
   app:passwordToggleEnabled="true">

<EditText
    android:id="@+id/returning_password"
    android:layout_
    android:layout_
    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_
   android:layout_
   app:passwordToggleEnabled="true">

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

</com.google.android.material.textfield.TextInputLayout>

【讨论】:

对于那些将应用程序迁移到 androidx 的人来说真的很有帮助。谢谢【参考方案3】:

您不需要添加以下内容:

app:passwordToggleEnabled="true"

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

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

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

编辑:

现在

app:passwordToggleEnabled="true"

正在合作,

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

【讨论】:

【参考方案4】:
<android.support.design.widget.TextInputLayout
   android:layout_
   android:layout_
   app:passwordToggleEnabled="true">

app:passwordToggleEnabled="true">

<EditText
    android:id="@+id/edt_password"
    android:layout_
    android:layout_
    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'

【讨论】:

以上是关于Android 密码可见性切换不适用于支持库 25?的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio - XML 编辑器自动完成功能不适用于支持库

可见性的替代方案:折叠不适用于 IE 和 Chrome

html 切换密码可见性

CSS 过渡:不透明度和可见性过渡不适用于 Firefox(适用于 Chrome / Safari)

动态壁纸 isVisible/onVisibilityChanged 不适用于 Android 9+ 应用程序抽屉

为啥以下用于切换两个容器的可见性的代码不起作用,正确的做法是啥?