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】:只需使用 MaterialButton
和 app: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 按钮背景颜色的主要内容,如果未能解决你的问题,请参考以下文章