Android ring shape for radio button

后端 未结 2 1092
别跟我提以往
别跟我提以往 2020-12-19 11:37

I need to create 2 ring shapes for my radio buttons:

  1. white circle
  2. white circle with another circle inside it with a different color

I d

相关标签:
2条回答
  • 2020-12-19 11:55

    Here is some code for you..You can do something like this. If you have any problem then I can mail you whole project..Hope this helps you and others. !!

    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>
    

    res/layout/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>
    

    Screenshot:

    OutPut

    0 讨论(0)
  • 2020-12-19 12:02

    The Ketan Ahir solution, not work for me beacouse i need filled background. Finally a made 1 ring shape, and oval shape, and set size when display.

    ring shape

     <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>
    

    Oval Shape

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

    Resizing Code

        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 );
            }
        });
    
    0 讨论(0)
提交回复
热议问题