6

我需要为我的单选按钮创建 2 个环形:

  1. 白色圆圈
  2. 白色圆圈,里面有另一个圆圈,颜色不同

我对如何做到这一点没有太多线索。到目前为止我尝试了什么:

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

    <item android:state_checked="false"><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="ring">
            <android:solid android:color="@color/white" />

            <android:size android:height="10dp" android:width="10dp" />

            <corners android:radius="10dp" />
        </shape></item>

</selector>

<RadioButton
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:button="@drawable/radio_shape_unchecked"
                        android:checked="false"
                        android:text="Persoana fizica" />

http://i.stack.imgur.com/mltby.png

4

2 回答 2

22

这是给你的一些代码..你可以做这样的事情。如果您有任何问题,那么我可以将整个项目邮寄给您。希望这对您和其他人有所帮助。!!

res/drawable/red_ring.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
   android:innerRadiusRatio="3"
   android:shape="ring"
   android:thickness="10dp"
   android:useLevel="false" >

  <solid android:color="#FF0000" />

  <size
    android:height="30dp"
    android:width="30dp" />

</shape>

res/drawable/blue_ring.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
   android:innerRadiusRatio="3"
   android:shape="ring"
   android:thickness="5dp"
   android:useLevel="false" >

  <solid android:color="#0000FF" />

  <size
    android:height="20dp"
    android:width="20dp" />

</shape>

res/drawable/layer.xml

  <?xml version="1.0" encoding="utf-8"?>
  <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
      <item android:drawable="@drawable/red_ring"/>
      <item android:drawable="@drawable/blue_ring"/>

  </layer-list>

res/drawable/selector_radio.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
   <item android:state_checked="true" android:drawable="@drawable/layer"></item>
   <item android:drawable="@drawable/blue_ring"></item>
</selector>

资源/布局/activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<RadioGroup
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_centerInParent="true"
    android:gravity="center" >

    <RadioButton
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:button="@drawable/selector_radio"
        android:paddingLeft="30dp"
        android:text="Radio 1" />

    <RadioButton
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:button="@drawable/selector_radio"
        android:paddingLeft="30dp"
        android:text="Radio 2" />
   </RadioGroup>

 </RelativeLayout>

截屏:

输出

于 2013-08-21T09:17:39.723 回答
0

Ketan Ahir 解决方案对我不起作用,因为我需要填充背景。最后制作了1个环形和椭圆形,并在展示时设置尺寸。

环形

 <shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="ring" android:useLevel="false">
    <solid
        android:color="#fbad38" />
    <stroke
        android:width="2dp"
        android:color="#fbad38" />
   </shape>

椭圆形

<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="oval" android:useLevel="false">
  <solid android:color="#fbad38"></solid>
</shape>

调整代码大小

    frbtRadio1 = (RadioButton) view.findViewById(R.id.radio1);

    frbtRadio1.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            ViewGroup.LayoutParams lp = frbtRadio1.getLayoutParams();
            lp.height = frbtRadio1.getWidth();

            frbtRadio1.setLayoutParams(lp)
            frbtRadio1.getViewTreeObserver().removeOnGlobalLayoutListener( this );
        }
    });
于 2015-07-15T13:40:08.227 回答