Android按钮背景形状

时间:2014-04-09 16:48:40

标签: android radio-button android-ui android-styles

我想创建一个如下所示的单选按钮:

enter image description here

也就是说,选中时,会显示一个复选标记,表示它已被选中而不是一个点。未选中时,只有橙色背景(或其他颜色)。

页面的黑色背景只是应用程序的背景。

我知道我可以为每个按钮为不同的状态创建不同的drawable,但如果有很多颜色,这不是真正可扩展的。

我原以为我可以添加一个复选标记图像作为android:button属性的drawable图像,并为单选按钮提供android:background的不同颜色。但它不能很好地工作,因为背景的形状总是方形的。所以我最终得到一个方形按钮。

实现这样一个按钮的最佳方法是什么?或者,如何将背景形状更改为圆形/椭圆形而不是方形?

这就是我现在所拥有的:

<!-- layout.xml -->
<RadioButton
    android:id="@+id/radio1"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:background="@color/orange"
    android:button="@drawable/radio"/>

<!-- drawable/radio.xml -->
<item 
    android:state_checked="true" 
    android:drawable="@drawable/checkmark_on_oval"
    >
</item>    

2 个答案:

答案 0 :(得分:3)

尝试这可能对您有所帮助。 放置radio_button属性,如

    <RadioButton
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:button="@null"
        android:checked="true"
        android:drawableLeft="@drawable/radio_button_selector"
        android:drawablePadding="5dp"
        android:paddingLeft="2dp" />

在drawable文件夹中输入rb_drawable.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/radio_button_unchecked" android:state_checkable="true"/> <!-- pressed -->
    <item android:drawable="@drawable/radio_button_checked" android:state_checked="true"/> <!-- focused -->
    <item android:drawable="@drawable/radio_button_unchecked"/> <!-- default -->

</selector>

此处 radio_button_unchecked radio_button_checked 是您的单选按钮的两张图片。

答案 1 :(得分:1)

您可以使用以下代码

创建圆形
<?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="oval">
         <solid android:color="#9F2200"/>
         <stroke android:width="2sp" android:color="#fff" />
     </shape>

尝试一下..