我试图更改按钮背景颜色(默认,按下并对焦),但我找不到好方法。我已经阅读了很多关于造型布鲁顿的帖子,但遗憾的是这些帖子是为了创造一种竞争的新风格。除了背景颜色,我想保持一切相同。
我更喜欢使用xml,因为我使用单个布局进行多项活动。我也在寻找适用于Android 4.0及以上和4.0以下的解决方案。
有人可以帮帮我吗?
答案 0 :(得分:1)
使用您想要的按钮设置button_style.xml
,如下例所示,并将此文件放在drawable
文件夹下的res
文件夹中。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<gradient
android:startColor="@color/MyButtonDarkGray"
android:endColor="@color/MyButtonDarkGray"
android:angle="270" />
<stroke
android:width="0dp"
android:color="@color/Gray" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item android:state_focused="true" >
<shape>
<gradient
android:endColor="@color/Green"
android:startColor="@color/Green"
android:angle="270" />
<stroke
android:width="0dp"
android:color="@color/Gray" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:endColor="@color/green_leaf_top"
android:startColor="@color/green_leaf_bottom"
android:angle="270" />
<stroke
android:width="0dp"
android:color="@color/Gray" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
</selector>
现在,在styles.xml
文件夹下的res\values
,添加
<style name="button" parent="@android:style/Widget.Button">
<item name="android:background">@drawable/button_style</item>
</style>
此样式仅适用于所有按钮。
注意:颜色在res\values\colors.xml
中单独定义,您可以使用自己的颜色。
答案 1 :(得分:1)
如果要更改默认按钮颜色而不丢失阴影,则建议更改所需按钮的样式。
您只需将这一行添加到按钮标记中即可
style="@style/Widget.AppCompat.Button.Colored"
示例代码如下:
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Widget.AppCompat.Button.Colored"
android:text="Rate now"/>
现在在res-> values-> colors.xml文件下的color.xml中将colorAccent更改为所需的颜色。
<color name="colorAccent">your color here</color>
您可以访问官方开发人员页面以获取更多信息Styling buttons
答案 2 :(得分:0)
这是一个用于根据按钮状态更改颜色的xml: 创建一个可绘制的资源,如下所示
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_enabled="false"
android:drawable="@android:color/black" />
<item
android:state_pressed="true"
android:state_enabled="true"
android:drawable="@android:color/holo_orange_dark" />
<item
android:state_focused="true"
android:state_enabled="true"
android:drawable="@android:color/holo_green_dark" />
<item
android:state_enabled="true"
android:drawable="@android:color/holo_blue_bright" />
</selector>
在java代码中设置drawable资源如下:
Button btn = (Button) findViewById(R.id.btn1);
btn.setBackground(this.getResources().getDrawable(R.drawable.mydrawable));
在xml中将drawable设置为xml中按钮的背景:
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/mydrawable" />
注意:您可以设置java代码或xml。