如何在android中设置buttonselect颜色和圆angular?

我想为Android中的button设置一个圆angular,并在选中时更改button颜色。 我正在做以下的事情。

绘制/ push_button.xml

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_pressed="true" android:drawable="@color/green"/> <item android:state_focused="true" android:drawable="@color/green"/> <item android:state_focused="false" android:drawable="@color/green"/> <item android:state_pressed="false" android:drawable="@color/red"/> <item android:drawable="@drawable/push_button_background"/> </selector> 

绘制/ push_button_background.xml

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <solid android:color="#3F4040"/> <corners android:radius="7dp" /> </shape> 

在代码中,我正在使用

 android:background="@drawable/push_button" 

在这里,问题是,select和取消selectbutton颜色设置正确。 但是,圆angular不工作。

怎么做? 如果我使用

 android:background="@drawable/push_button_background" 

然后,圆angular正在工作,但selectbutton颜色更改不起作用

如何实现这个?

我已经提到这个链接。 即使那么没有帮助!

Solutions Collecting From Web of "如何在android中设置buttonselect颜色和圆angular?"

我已经为我的问题find了答案,只有很less的尝试和错误的尝试。

这是解决scheme。

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_pressed="true"> <shape > <solid android:color="@color/green"/> <corners android:radius="7dp"/> </shape> </item> <item android:state_focused="true" > <shape xmlns:android="http://schemas.android.com/apk/res/android" > <solid android:color="@color/green"/> <corners android:radius="7dp"/> </shape> </item> <item android:state_focused="false" > <shape xmlns:android="http://schemas.android.com/apk/res/android" > <solid android:color="@color/red"/> <corners android:radius="7dp"/> </shape> </item> <item android:state_pressed="false" > <shape xmlns:android="http://schemas.android.com/apk/res/android" > <solid android:color="@color/red"/> <corners android:radius="7dp" /> </shape> </item> </selector> 

我所做的是定义形状并指定每个angular的dp。

 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="90dp"> <solid android:color="#FFFFFF"/> <padding /> <corners android:bottomRightRadius="15dp" android:bottomLeftRadius="15dp" android:topLeftRadius="15dp" android:topRightRadius="15dp"/> </shape> 

如果你增加每个angular落的dp,它会使button更圆。

我已经成功地完成了你所描述的内容。 我做了以下几点:

首先,我创build了一个扩展Button的新类。 在这个类中,我创build了一个名为setState()的方法:

 public void setState (int s) { if (s > 0 && s < 4 &&) { this.state = s; switch (state) { case 1: setBackgroundDrawable (def_gray); break; case 2: setBackgroundDrawable (lt_gray); break; case 3: setBackgroundDrawable (black); } } } 

上面看到的三个背景可绘图是描述button外观的XML文件。 他们大多是相同的,但在每个人的颜色设置不同。 默认的灰色button是这样描述的:

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape> <gradient android:startColor="#333333" android:endColor="#333333" /> <stroke android:width="2dp" android:color="@android:color/white" /> <corners android:radius="5dp" /> <padding android:left="2dp" android:top="2dp" android:right="2dp" android:bottom="2dp" /> </shape> </item> </selector> 

据我所知,XML格式期望被用来configurationbutton上的颜色渐变。 由于这不是我想要的,所以我将两个颜色值设置为相同,背景颜色一致。 您可能需要尝试一下颜色值,但看起来您已经掌握了这些。