android - 如何使用 AppCompat 设置按钮的禁用颜色?

标签 android android-appcompat android-button

我使用这种样式来改变我的 Button 的背景颜色:

<style name="AccentButton" parent="Widget.AppCompat.Button.Colored">
    <item name="colorButtonNormal">@color/colorAccent</item>
    <item name="android:textColor">@color/white</item>
</style>

在布局中:

    <Button
        android:id="@+id/login_button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/fragment_login_login_button"
        app:theme="@style/AccentButton"/>

它有效。但是当我在这个 Button 上调用 setEnabled(false) 时,它保持相同的颜色。我该如何处理这种情况?

最佳答案

您没有正确使用 Widget.AppCompat.Button.Colored 样式。您正在使用父样式 (Widget.AppCompat.Button.Colored),但将其作为主题应用。这实际上意味着 Widget.AppCompat.Button.Colored 部分被完全忽略,而您只是更改按钮的默认颜色(有效,但不处理禁用的情况)。

相反,您应该使用 ThemeOverlay 并单独应用 Colored 样式:

<style name="AccentButton" parent="ThemeOverlay.AppCompat.Dark">
   <!-- customize colorButtonNormal for the disable color -->
   <!-- customize colorAccent for the enabled color -->
</style>

<Button
    android:id="@+id/login_button"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/fragment_login_login_button"
    android:theme="@style/AccentButton"
    style="@style/Widget.AppCompat.Button.Colored"/>

this answer on using the Widget.AppCompat.Button.Colored style 中所述,禁用颜色由 colorButtonNormal 控制,启用颜色由 colorAccent 控制。通过使用 ThemeOverlay.AppCompat.DarktextColor 会自动变为深色,这意味着您可能根本不需要自定义 ThemeOverlay

关于android - 如何使用 AppCompat 设置按钮的禁用颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35810614/

相关文章:

java - 如何以编程方式隐藏 android 一些但不是全部的 XML 输出中的查看项目?

java - 我的 fragment Activity 内的按钮不起作用

java - 错误:javax.net.ssl.SSLHandshakeException,SSL 库失败?

android - Gradle:从Android Assets 文件夹中排除文件

android - NavigationView 与 DrawerLayout setCheckedItem 不工作

android - 如何在每个项目的 ListView 中实现简单的类似按钮

android - 如何实现这个 Material Design 2.0 按钮形状?

android - AppCompat v7 :21 Split Action Bar Broken?

Android Studio 一直拒绝解析 com.android.support :appcompat-v7:29. 0.1

Android Studio/com.android.support :appcompat-v7:27. 1.1 红色下划线