如何改变按钮的颜色?

How to change the color of a button?

我是 android 编程新手。如何更改按钮的颜色?

<Button
    android:id="@+id/btn"
    android:layout_width="55dp"
    android:layout_height="50dp"
    android:layout_gravity="center"
    android:text="Button Text"
    android:paddingBottom="20dp"/>

对于文本颜色添加:

android:textColor="<hex color>"


对于背景颜色添加:

android:background="<hex color>"


API 21你可以使用:

android:backgroundTint="<hex color>"
android:backgroundTintMode="<mode>"

注意: 如果你要使用 android/java 你真的应该学习如何 google ;)
How to customize different buttons in Android

您可以通过两种方式更改颜色;通过 XML 或通过编码。我会推荐 XML,因为初学者更容易理解。

XML:

<Button
    android:background="@android:color/white"
    android:textColor="@android:color/black"
/>

您也可以使用十六进制值 ex。

android:background="@android:color/white"

编码:

//btn represents your button object

btn.setBackgroundColor(Color.WHITE);
btn.setTextColor(Color.BLACK);

以编程方式更改按钮的颜色

这里是:

Button b1;
//colorAccent is the resource made in the color.xml file , you can change it.
b1.setBackgroundResource(R.color.colorAccent);  

这是我的代码,在按钮、线性、约束和滚动布局上制作不同的颜色

首先,您需要在您的可绘制对象上创建一个custom_button.xml

  1. 转到资源
  2. 展开它,右击drawable
  3. 新建 -> 可绘制资源文件
  4. 文件名:custom_button,单击“确定”

Custom_Button.xml代码

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@color/red"/> <!-- pressed -->
    <item android:state_focused="true" android:drawable="@color/blue"/> <!-- focused -->
    <item android:drawable="@color/black"/> <!-- default -->
</selector>

其次,去res

  1. 展开值
  2. 双击colors.xml
  3. 复制下面的代码

Colors.xml代码

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>

    <color name="black">#000</color>
    <color name="violet">#9400D3</color>
    <color name="indigo">#4B0082</color>
    <color name="blue">#0000FF</color>
    <color name="green">#00FF00</color>
    <color name="yellow">#FFFF00</color>
    <color name="orange">#FF7F00</color>
    <color name="red">#FF0000</color>
</resources>

以下截图

XML 编码 设计预览

从 API 23 开始,您可以:

btn.setBackgroundColor(getResources().getColor(R.color.colorOffWhite));

并且您的 colors.xml 必须包含:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorOffWhite">#80ffffff</color>
</resources>

正确的方法...

以下方法确实有效。

如果你愿意 - 使用主题
默认情况下,按钮颜色为 android:colorAccent。所以,如果您创建这样的样式...

<style name="Button.White" parent="ThemeOverlay.AppCompat">
    <item name="colorAccent">@android:color/white</item>
</style>

你可以这样使用它...

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:theme="@style/Button.White"
    />

或者 - 使用色调
您可以简单地为 API 级别 21 及更高添加 android:backgroundTint,或为 API 级别 7 及更高添加 app:backgroundTint

有关详细信息,请参阅 this blog

接受的答案有问题...

如果用颜色替换背景,按钮的效果会减弱,颜色会应用到按钮的整个区域。它不会考虑填充、阴影和角半径。

如果您尝试将背景设置为可绘制文件夹中的其他资源文件,例如 custom-button.xml,请尝试以下操作:

button_name.setBackgroundResource(R.drawable.custom_button_file_name);

例如。比如说,你有一个 custom-button.xml 文件。那么,

button_name.setBackgroundResource(R.drawable.custom_button);

将按钮背景设置为 自定义-button.xml 文件。

您可以像这样更改 XML 中的值:

<Button
    android:background="#FFFFFF"
     ../>

在这里,您可以从资源或十六进制添加任何其他颜色。

同样,您也可以像这样从代码中更改这些值:

demoButton.setBackgroundColor(Color.WHITE);

另一种简单的方法是制作一个drawable,根据您的喜好自定义角和形状,并设置drawable的背景颜色和描边。 例如

button_background.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android:width="2dp" android:color="#ff207d94" />
    <corners android:radius="5dp" />
    <solid android:color="#FFFFFF" />
</shape>

然后将这个形状设置为按钮的背景。

<Button
    android:background="@drawable/button_background.xml"
     ../>

希望对您有所帮助,祝您好运!

如果第一个解决方案不起作用,试试这个:

android:backgroundTint="@android:color/white"

我希望这项工作。 编码愉快。

上面介绍了许多很棒的方法 - 一个较新的笔记

Material 的早期版本中似乎存在一个错误,阻止了某些类型的覆盖按钮颜色。

参见:[Button] android:background not working #889

我今天用的是Material 1.3.0。我只是按照链接 post 中 KavinduDissanayake 的指示使用了这种格式:

app:backgroundTint="@color/purple_700"

(当然,我将选择的颜色更改为我自己的主题。)这个解决方案对我来说非常简单。

看图容易理解

我有同样的问题 我的解决方案是背景颜色是我主题的 colorPrimary 您可以使用自定义主题作为上面所说的一个答案,并将 colorPrimary 设置为您想要的

1- 将此添加到资源中的“value/themes/themes.xml”

<resources>
   <style name="Button.color" parent="ThemeOverlay.AppCompat">
       <item name="colorPrimary">@color/purple_500</item>
   </style>
</resources>

2- 将此行添加到您想要具有颜色的按钮

    <Button
  
      android:theme="@style/Button.color"/>

在不丢失按钮重影和其他功能的情况下更改按钮颜色的最佳方法。

试试看,你会发现它是最好的

app:backgroundTint="@color/color_name"

转到 res > values > themes > theme.xml/themes.xml。然后更改:

<style name="Theme.BirthdayGreet" parent="Theme.MaterialComponents.DayNight.DarkActionBar">

收件人:

<style name="Theme.MemeShare" parent="Theme.AppCompat.Light.NoActionBar">)>

Watch this video for more information.

在主题中更改为: parent="Theme.MaterialComponents.DayNight.DarkActionBar" 对此: parent="Theme.AppCompat.Light.NoActionBar"

经过多次搜索,它对我有用

API21背景以上的backgroundTint没有效果默认取主题的colorPrimary

  1. 在 android 工作室的新更新中,您必须更改

按钮 -> androidx.appcompat.widget.AppCompatButton

那么只有按钮颜色会改变

res/drawable/button_color_border.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <solid android:color="#FFDA8200" />

    <stroke
        android:width="3dp"
        android:color="#FFFF4917" />

</shape>


并将按钮添加到您的 XML activity 布局并设置背景 android:background="@drawable/button_color_border".

<androidx.appcompat.widget.AppCompatButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/button_border"
    android:text="Button" />

Button background color in xml

<Button
    android:id="@+id/button"
    android:background="#0000FF"
    android:textColor="#FFFFFF"/>

Change button background color programmatically

Button button = findViewById(R.id.button);
button.setBackgroundColor(Color.BLUE);

Custom button background

shape.xml [res --> drawble]

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="5dp" />
    <gradient
        android:angle="0"
        android:endColor="#0000FF"
        android:startColor="#00FFFF" />
    <stroke
        android:width="1dp"
        android:color="#000000" />
</shape>

添加这一行

android:background="@drawable/shape"

完整代码

<Button
    android:id="@+id/button"
    android:background="@drawable/shape"
    android:textColor="#FFFFFF"/>

Material Design Button

更改按钮背景颜色

app:backgroundTint="#0000FF"

按钮描边颜色

app:strokeColor="#000000"

按钮笔划宽度

app:strokeWidth="2dp"

完整代码

<Button
    android:id="@+id/button"
    android:textColor="#FFFFFF"
    app:backgroundTint="#0000FF"
    app:strokeColor="#000000"
    app:strokeWidth="2dp"/>

希望对您有所帮助!

通常 API 21 岁及以上: 只需 PUT 这个属性:android:backgroundTint="你的颜色"