Android 默认按钮颜色

Posted

技术标签:

【中文标题】Android 默认按钮颜色【英文标题】:Android default button color 【发布时间】:2021-01-31 15:23:36 【问题描述】:

当我打开一个新的 android studio 项目时,按钮的默认颜色是紫色。我希望默认颜色是灰色默认按钮颜色(我假设你知道我的意思)。我试图通过 xml 和 java 更改颜色,但没有任何效果。我希望默认按钮颜色为灰色,而不必每次都更改它。

themse.xml:

<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.HangmanGame" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
    <!-- Primary brand color. -->
    <item name="colorPrimary">@color/purple_500</item>
    <item name="colorPrimaryVariant">@color/purple_700</item>
    <item name="colorOnPrimary">@color/white</item>
    <!-- Secondary brand color. -->
    <item name="colorSecondary">@color/teal_200</item>
    <item name="colorSecondaryVariant">@color/teal_700</item>
    <item name="colorOnSecondary">@color/black</item>
    <!-- Status bar color. -->
    <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
    <!-- Customize your theme here. -->
</style>

themes.xml(夜晚)

<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.HangmanGame" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
    <!-- Primary brand color. -->
    <item name="colorPrimary">@color/purple_200</item>
    <item name="colorPrimaryVariant">@color/purple_700</item>
    <item name="colorOnPrimary">@color/black</item>
    <!-- Secondary brand color. -->
    <item name="colorSecondary">@color/teal_200</item>
    <item name="colorSecondaryVariant">@color/teal_200</item>
    <item name="colorOnSecondary">@color/black</item>
    <!-- Status bar color. -->
    <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
    <!-- Customize your theme here. -->
</style>

【问题讨论】:

你在使用材料组件库吗? 否,按钮颜色默认为紫色 发布您的应用主题 您的 colorPrimary 和 colorPrimaryVariant 设置为紫色。将这些更改为灰色不起作用? 默认按钮颜色的十六进制值是多少? 【参考方案1】:

由于您使用的是 Theme.MaterialComponents.* 主题,Button(被 MaterialButton 替换)的默认背景颜色是 colorPrimary在您的应用主题中定义。 在你的情况下:

<item name="colorPrimary">@color/purple_500</item>

您可以更改此值(但这会影响所有小部件)。

如果您想全局更改应用中的按钮样式,您还可以在应用主题中添加materialButtonStyle 属性:

<style name="Theme.HangmanGame" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
   <item name="materialButtonStyle">@style/Widget.App.Button</item>
</style>

与:

<style name="Widget.App.Button" parent="Widget.MaterialComponents.Button">
    <item name="backgroundTint">@color/...</item>
</style>

如果您只想在按钮中更改此颜色,您还可以使用 app:backgroundTint 属性删除 android:background 属性:

<Button
    app:backgroundTint="@color/..."/>

如果您想通过android:background 属性使用自定义背景,您必须添加app:backgroundTint="@null" 以避免按钮被着色。

【讨论】:

【参考方案2】:

我认为最简单的方法是进入三个xml文件:src\main\res\values\colors.xml、src\main\res\values\themes.xml和src\main\res\values-night \themes.xml

在colors.xml 中,添加一种颜色并将其命名为“按钮”,然后将颜色设置为您想要的颜色。有关颜色代码的简单列表,请参阅此答案:https://***.com/a/7323234/5374362

这条线看起来像这样:

<color name="button">#808080</color>  //That code is the gray you want.

在两个主题文件中,将colorPrimary改为“@color/button”

这将影响应用中的每个按钮。

【讨论】:

以上是关于Android 默认按钮颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 的浮动操作按钮 FAB 中保留可绘制的默认颜色

Android 样式指定按钮颜色

android imageButton 点击按钮前中后,按钮颜色的变化

如何在android中更改切换按钮颜色

Android 按钮文本颜色始终为粉红色

Android - 默认按钮样式