我试着改变按钮的背景颜色(默认,按下和焦点),但我找不到一个好的方法。我读过很多关于设计buuton风格的帖子,但不幸的是,这些帖子是为了创造一种有竞争力的新风格。我想保持所有的东西都一样,除了背景颜色。
我更喜欢使用xml,因为我对多个活动使用单个布局。我也在寻找一种适用于Android4.0和4.0以下版本的解决方案。
有人能帮帮我吗?
发布于 2019-05-22 14:35:45
如果你想在不丢失阴影的情况下改变默认按钮的颜色,那么我建议你改变所需按钮的样式。
您只需将此行添加到button标记即可完成此操作
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
发布于 2014-08-24 02:57:44
使用您想要的按钮设置创建一个button_style.xml
,如下例所示,并将此文件放入res
文件夹下的drawable
文件夹中。
<?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>
现在,在res\values
文件夹下的styles.xml
中,添加
<style name="button" parent="@android:style/Widget.Button">
<item name="android:background">@drawable/button_style</item>
</style>
此样式仅适用于您的所有按钮。
注意:颜色在res\values\colors.xml
中是单独定义的,您可以使用自己的颜色。
发布于 2014-08-24 02:55:24
下面是一个用于根据按钮状态更改颜色的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代码中设置可提取的资源,如下所示:
Button btn = (Button) findViewById(R.id.btn1);
btn.setBackground(this.getResources().getDrawable(R.drawable.mydrawable));
在xml中,将可绘制内容设置为xml中按钮的背景:
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/mydrawable" />
注意:您可以在java代码或xml中进行设置。
https://stackoverflow.com/questions/25465302
复制相似问题