我正在尝试在我的应用中设置按钮的背景颜色,但我无法达到我想要的效果......
我尝试设置的颜色是holo_green_light(#ff99cc00)
。为了做到这一点,我正在使用setColorFilter(0xff99cc00, PorterDuff.Mode.MULTIPLY);
我得到的颜色不是holo_green_light
,而是lightgrey和holo_green_light
的混合。
我尝试使用LightingColorFilter
但没有取得多大成功。
有没有办法以编程方式进行,因此按钮看起来像一个按钮而不是一个带有我需要的颜色的扁平矩形。
答案 0 :(得分:41)
这是我用不同颜色做自定义Button的方法。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<stroke android:width="3dp"
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_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:layout_marginBottom="25dp"
android:layout_centerInParent="true"
android:background="@drawable/button"/>
答案 1 :(得分:21)
如果你想保留一般造型(圆角等)并只改变背景颜色,那么我使用backgroundTint属性
android:backgroundTint="@android:color/holo_green_light"
答案 2 :(得分:18)
按钮比仅改变一种颜色更复杂......
Android按钮是使用相当多的9个补丁和状态drawables制作的。您应该看看Android Holo Colors来生成这些,您需要选择“颜色按钮”,它将生成必要的图像&amp; xml给你......
答案 3 :(得分:16)
如果你不介意硬编码,你可以这样做〜&gt;机器人:背景=&#34;#EEEEEE&#34;你想要的任何十六进制颜色。
看起来像这样......
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/textView1"
android:text="@string/ClickMe"
android:background="#fff"/>
答案 4 :(得分:12)
使用以下内容创建/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 :(得分:5)
不需要那个硬核 试试这个:
YourButtonObject.setBackground(0xff99cc00) ;
答案 6 :(得分:4)
为什么不使用setBackgroundColor(getResources().getColor(R.color.holo_light_green))
?
编辑:如果你想拥有一个看起来更像Android按钮的东西,你会想要创建一个渐变并将其设置为背景。有关此示例,您可以查看this question。
答案 7 :(得分:2)
只需使用MaterialButton
和 app:backgroundTint
属性:
<MaterialButton
app:backgroundTint="@color/my_color_selector"
答案 8 :(得分:1)
试试这个
<androidx.appcompat.widget.AppCompatButton
android:layout_width="wrap_content"
android:layout_height="34dp"
android:text="Check Out"
android:textAllCaps="true"
android:background="#54c2bc"
android:textColor="#FFFFFF"
android:textSize="9sp"/>
答案 9 :(得分:0)
为了保持风格,请使用:
int color = Color.parseColor("#99cc00");
button.getBackground().mutate().setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC));
答案 10 :(得分:0)
除了马克·普罗克特的回答:
如果您想保留默认样式,但按钮上需要有条件的颜色,只需设置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 :(得分:0)
对于1.2.0-alpha06的material design library版本,现在我们可以在android:background="..."
个组件上使用MaterialButton
:
<com.google.android.material.button.MaterialButton
android:background="#fff"
...
/>