Android 按钮背景颜色

Posted

技术标签:

【中文标题】Android 按钮背景颜色【英文标题】:Android button background color 【发布时间】:2013-08-06 20:37:29 【问题描述】:

我正在尝试在我的应用中设置按钮的背景颜色,但我无法达到我想要的结果...

我要设置的颜色是holo_green_light(#ff99cc00)。为了做到这一点,我使用setColorFilter(0xff99cc00, PorterDuff.Mode.MULTIPLY);

我得到的颜色不是holo_green_light,而是浅灰色和holo_green_light的混合色。

我曾尝试使用LightingColorFilter,但没有取得多大成功。

有没有办法以编程方式进行,使按钮看起来像一个按钮,而不是我需要的颜色的平面矩形。

【问题讨论】:

尝试使用android:background="@drawable/button" 【参考方案1】:

如果您想保持一般样式(圆角等)并只更改背景颜色,那么我使用 backgroundTint 属性

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

【讨论】:

android:backgroundTint 将仅用于 api >= 21。请改用app:backgroundTint @repitch 将 app:backgroundTint 为每个 api 工作? 在 Proctor 和 Repitch 之间,这应该是这个问题的最常见答案【参考方案2】:

这是我用不同颜色自定义按钮的方法:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android:
        android:color="#80FFFFFF" />
 
    <corners android:radius="25dp" />
 
    <gradient android:angle="270"
            android:centerColor="#90150517"
            android:endColor="#90150517"
            android:startColor="#90150517" />
</shape>

这样设置为背景:

<Button android:id="@+id/button"
        android:layout_
        android:layout_
        android:text="Button"
        android:layout_marginBottom="25dp"
        android:layout_centerInParent="true"
        android:background="@drawable/button" />

【讨论】:

对于像我这样的菜鸟,如果您能更明确地了解第一个代码示例的位置,将会很有帮助。是drawables文件夹中名为Button.xml的文件吗? 海杰夫。请在 res 文件夹中创建一个可绘制文件夹并制作一个 button.xml。请复制粘贴此代码。在您的按钮背景中调用此 xml。它会起作用的。【参考方案3】:

如果你不介意硬编码,你可以这样做 ~> android:background="#eeeeee" 并删除任何你想要的十六进制颜色。

看起来像这样......

<Button
    android:id="@+id/button1"
    android:layout_
    android:layout_
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/textView1"
    android:text="@string/ClickMe"
    android:background="#fff"/>

【讨论】:

你只需要改变背景颜色就会失去圆角和默认选择状态。【参考方案4】:

使用以下内容创建/res/drawable/button.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<!-- you can use any color you want I used here gray color-->
 <solid android:color="#90EE90"/> 
    <corners
     android:bottomRightRadius="3dp"
     android:bottomLeftRadius="3dp"
  android:topLeftRadius="3dp"
  android:topRightRadius="3dp"/>
</shape>

然后您可以使用以下内容:

<Button
    android:id="@+id/button_save_prefs"
    android:text="@string/save"
    android:background="@drawable/button"/>

【讨论】:

【参考方案5】:

只需使用 MaterialButtonapp:backgroundTint 属性:

<MaterialButton
  app:backgroundTint="@color/my_color_selector"

【讨论】:

【参考方案6】:

为什么不直接使用setBackgroundColor(getResources().getColor(R.color.holo_light_green))

编辑:如果你想要一个看起来更像 Android 按钮的东西,你会想要创建一个渐变并将其设置为背景。例如,您可以查看this question。

【讨论】:

不会让按钮看起来像一个扁平的矩形吗? 看起来默认的Android按钮有一个渐变作为背景,所以如果你想模仿这种效果,你可能需要自己创建一个渐变并将其设置为背景。我添加了一个编辑效果。【参考方案7】:

没必要那么铁杆。 试试这个:

YourButtonObject.setBackground(0xff99cc00);

【讨论】:

【参考方案8】:

试试这个

<androidx.appcompat.widget.AppCompatButton
    android:layout_
    android:layout_
    android:text="Check Out"
    android:textAllCaps="true"
    android:background="#54c2bc"
    android:textColor="#FFFFFF"
    android:textSize="9sp"/>

【讨论】:

【参考方案9】:

为了保持风格,使用:

int color = Color.parseColor("#99cc00");
button.getBackground().mutate().setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC));

【讨论】:

为什么要添加mutate?【参考方案10】:

除了 Mark Proctor 的回答:

如果您想保留默认样式,但在按钮上有条件着色,只需像这样设置backgroundTint 属性:

android:backgroundTint="@drawable/styles_mybutton"

创建关联文件/res/drawable/styles_mybutton.xml,然后使用以下模板并根据您的喜好更改颜色:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Disabled state-->
    <item android:state_enabled="false"
        android:color="@android:color/white">
    </item>
    <!-- Default state-->
    <item
        android:color="#cfc">
    </item>
</selector>

【讨论】:

【参考方案11】:

使用material design library 的版本1.2.0-alpha06,现在我们可以在MaterialButton 组件上使用android:background="..."

<com.google.android.material.button.MaterialButton
    android:background="#fff"
    ...
/>

【讨论】:

您可以使用android:background 绘制可绘制对象。如果您只想更改颜色,请使用app:backgroundTint 属性。 为了能够通过 MaterialButton 使用背景(例如使用可绘制对象),您还需要将 app:background tint 设置为 null app:backgroundTint="@null" android:background="@drawable/ bg_drawable"

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

Android:更改按钮文本和背景颜色

怎么设置android背景颜色

按下Android设置背景颜色按钮

更改圆形按钮android的背景颜色

android中怎样设置背景颜色

Android:更改背景颜色查看 onClick 按钮