如何正确设置单选按钮的大小?

时间:2018-10-15 08:55:53

标签: android xamarin.android

编辑:作为测试,我一直在使用单选按钮和背景的固定大小:

  

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

结果显然是左边的溢出。 enter image description here


我正在使用一个GridLayout,其中包含的radioGroup跨越了网格的所有列。 我想使所有radioButtons大小相等,并占据所有可用空间。

您可以看到无线电组(在Visual Studio for Mac设计器中选择)正在占用下图中的所有可用空间,但没有占用按钮:

enter image description here

每个单选按钮都是自定义按钮,它显示1到10之间的数字,并在选中时用颜色圈出。

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

可绘制对象:

  

qol_score_background

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

b.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="#555555" />
    </shape>

我不得不说我在调整元素方面遇到了困难。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

解决此问题的最佳方法是使用AppCompat RadioButton代替:

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

添加此内容后,万一仍然恢复原状就不会发生此问题。

答案 1 :(得分:0)

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