代码之家  ›  专栏  ›  技术社区  ›  Olivier MATROT

如何正确调整radiogroup中单选按钮的大小?

  •  1
  • Olivier MATROT  · 技术社区  · 6 年前

    :作为一项测试,我对单选按钮和背景使用了固定尺寸:

    android:layout_height=“40磅” android:layout_width=“40磅”

    显然,结果是向左溢出。 enter image description here


    我使用的是一个GridLayout,它包含跨越我网格中所有列的radiogroup。 我想使所有单选按钮大小相等,并采取所有的地方。

    您可以看到单选组(在Visual Studio for Mac designer中选择)占用了下图中的所有可用空间,但没有占用按钮:

    enter image description here

    以下是axml代码:

    <?xml version="1.0" encoding="UTF-8" ?>
    <GridLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:columnCount="10" android:orientation="horizontal">
        <RadioGroup android:id="@+id/qol_criteria1_radio_group" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal">
                <RadioButton android:id="@+id/qol_criteria1_score1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/qol_score_background" android:button="@android:color/transparent" android:checked="false" android:text="1" android:tag="1" />
                <RadioButton android:id="@+id/qol_criteria1_score2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/qol_score_background" android:button="@android:color/transparent" android:checked="false" android:text="2" android:tag="2" />
                <RadioButton android:id="@+id/qol_criteria1_score3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/qol_score_background" android:button="@android:color/transparent" android:checked="false" android:text="3" android:tag="3" />
                <RadioButton android:id="@+id/qol_criteria1_score4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/qol_score_background" android:button="@android:color/transparent" android:checked="false" android:text="4" android:tag="4" />
                <RadioButton android:id="@+id/qol_criteria1_score5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/qol_score_background" android:button="@android:color/transparent" android:checked="false" android:text="5" android:tag="5" />
                <RadioButton android:id="@+id/qol_criteria1_score6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/qol_score_background" android:button="@android:color/transparent" android:checked="false" android:text="6" android:tag="6" />
                <RadioButton android:id="@+id/qol_criteria1_score7" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/qol_score_background" android:button="@android:color/transparent" android:checked="false" android:text="7" android:tag="7" />
                <RadioButton android:id="@+id/qol_criteria1_score8" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/qol_score_background" android:button="@android:color/transparent" android:checked="false" android:text="8" android:tag="8" />
                <RadioButton android:id="@+id/qol_criteria1_score9" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/qol_score_background" android:button="@android:color/transparent" android:checked="false" android:text="9" android:tag="9" />
                <RadioButton android:id="@+id/qol_criteria1_score10" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/qol_score_background" android:button="@android:color/transparent" android:checked="false" android:text="10" android:tag="10" />
            </RadioGroup>
        </GridLayout>
    

    <?xml version="1.0" encoding="UTF-8" ?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android" >
        <item
            android:drawable="@drawable/b"
            android:state_checked="true"
            android:state_pressed="true" />
        <item
            android:drawable="@drawable/a"
            android:state_pressed="true" />
        <item
            android:drawable="@drawable/a"
            android:state_checked="true" />
        <item
            android:drawable="@drawable/b" />
    </selector>
    

    a、 xml格式

        <?xml version="1.0" encoding="UTF-8" ?>
        <shape
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle" >
            <corners
                android:radius="5dp" />
            <solid
                android:color="#fff" />
            <stroke
                android:width="2dp"
                android:color="#53aade" />
        </shape>
    

        <?xml version="1.0" encoding="UTF-8" ?>
        <shape
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle" >
            <corners
                android:radius="5dp" />
            <solid
                android:color="#fff" />
            <stroke
                android:width="2dp"
                android:color="#555555" />
        </shape>
    

    我不得不说,我很难与大小元素。谢谢你的帮助。

    2 回复  |  直到 6 年前
        1
  •  0
  •   karan    6 年前

    Radio-Group 允许具有权重的子级,为每个子级设置以下属性 Radio-Button 将平均设置每个子对象的宽度。

    <RadioButton 
    android:id="@+id/my_rad_1" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:background="@drawable/qol_score_background"
    android:button="@android:color/transparent" 
    android:checked="false" 
    android:text="1" 
    android:tag="1" />
    
        2
  •  0
  •   FreakyAli    6 年前

    解决这个问题的最佳方法是使用AppCompat RadioButton 取而代之的是:

    <android.support.v7.widget.AppCompatRadioButton
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     .
     .
     . />
    

    添加此项后,如果问题仍然存在,则不应发生。