我想在android中为按钮设置圆角,并在选中时更改按钮颜色。我正在做以下事情。
drawable/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>
drawable/push_button_background.xml .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"
这里的问题是,当选择和取消选择时,按钮颜色设置正确。但是,圆角不起作用。
如何做到这一点?如果我使用
android:background="@drawable/push_button_background"
然后,圆角可以工作,但选择时更改的按钮颜色不起作用
如何实现这个目标?
我已经引用了this链接。即使这样也没有帮助!!
发布于 2012-09-16 19:31:05
我已经找到了我的问题的答案,几乎没有试验和错误尝试。
以下是解决方案。
<?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>
发布于 2012-09-14 23:49:06
我所做的是定义形状并指定每个角的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>
如果你增加每一个角落的dp,它会使按钮变得更加圆润。
发布于 2012-09-15 00:41:58
我已经成功地做到了你所描述的。我做了以下工作:
首先,我创建了一个扩展Button的新类。在这个类中,我创建了一个名为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);
}
}
}
上面看到的三个背景可绘制文件是描述按钮外观的XML文件。它们大体上是相同的,但为每个颜色设置的颜色不同。默认的灰色按钮如下所示:
<?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格式预计将用于配置按钮表面的颜色渐变。因为这不是我想要的,所以我将两个颜色值设置为相同,并且背景颜色是一致的。您可能需要对颜色值进行一些实验,但看起来您已经掌握了这一点。
https://stackoverflow.com/questions/12427107
复制相似问题