RadioGroup按钮间距问题

时间:2015-08-21 15:52:06

标签: android android-layout android-layout-weight android-radiogroup android-radiobutton

我有一个带有4个自定义RadioButtons的RadioGroup,使用图标作为新的单选按钮,没有文字。

我无法让他们均匀地分开。

下面是一个屏幕显示和我的布局代码:

enter image description here

<RadioGroup
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_marginTop="8dp">

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/radioButton01"
        android:background="@drawable/rounded_radio_select"
        android:backgroundTint="@color/cyan_clouds"
        android:button="@android:color/transparent"
        android:checked="true" />
    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/radioButton02"
        android:background="@drawable/square_radio_select"
        android:backgroundTint="@color/cyan_clouds"
        android:button="@android:color/transparent" />
    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/radioButton03"
        android:background="@drawable/oval_radio_select"
        android:backgroundTint="@color/cyan_clouds"
        android:button="@android:color/transparent" />
    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/radioButton04"
        android:background="@drawable/thought_radio_select"
        android:backgroundTint="@color/cyan_clouds"
        android:button="@android:color/transparent" />
</RadioGroup>

您可以看到图标右侧有额外的空间。有没有办法删除它?

3 个答案:

答案 0 :(得分:0)

将Radiogroup的weightSum设置为1.如果有4个radiobuttons,则将layout_weight设置为0.25。

有关体重相关机制的更多信息,请查看this

编辑:

<LinearLayout
        android:layout_width="0dp"
        android:layout_weight="0.25"
        android:gravity="center"
        android:layout_height="wrap_content">

        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/radioButton01"
            android:button="@mipmap/ic_local_see_black_48dp"
            android:buttonTint="@color/red"
            android:checked="true" />

    </LinearLayout>

对每个复选框重复此块(将RadioGroup的weightSum设置为1)。

答案 1 :(得分:0)

我必须在线性布局中做一些类似的事情,我认为它可以应用于你的情况。要做到这一点,我必须将我的imageview按钮包裹在一个线性布局中,这样它们可以扩展,但内部的imageview不会。矿井可能不是最好的方式,但我认为它可以工作。这是代码。但它并不完全相似。我正在隐藏和显示编辑文本。

<LinearLayout android:layout_width="match_parent" android:id="@+id/linearLayoutProfileLinks" android:layout_marginLeft="10dp" android:layout_marginEnd="10dp" android:layout_marginTop="10dp" android:layout_marginStart="10dp" android:layout_marginRight="10dp" android:orientation="vertical" android:layout_height="wrap_content">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <LinearLayout
                android:layout_width="0dp"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:layout_height="wrap_content">
                <ImageButton
                    android:id="@+id/imageButtonWebsite"
                    android:background="@drawable/website"
                    android:layout_width="40dp"
                    android:layout_gravity="center_horizontal"
                    android:layout_height="40dp"
                    android:layout_marginRight="20dp"
                    android:clickable="true"
                    android:onClick="onWebsiteClick"
                    />
            </LinearLayout>

            <LinearLayout
                android:layout_width="0dp"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:layout_height="wrap_content">
                <ImageButton
                    android:id="@+id/imageButtonFaceBook"
                    android:background="@drawable/facebook"
                    android:clickable="true"
                    android:layout_marginRight="20dp"
                    android:onClick="onFacebookClick"
                    android:layout_width="40dp"
                    android:layout_height="40dp"/>
            </LinearLayout>

            <LinearLayout
                android:layout_width="0dp"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:layout_height="wrap_content">
                <ImageButton
                    android:id="@+id/imageButtonInstagram"
                    android:background="@drawable/instagram"
                    android:layout_width="40dp"
                    android:layout_marginRight="20dp"
                    android:layout_height="40dp"
                    android:clickable="true"
                    android:onClick="onInstagramClick"/>
            </LinearLayout>

            <LinearLayout
                android:layout_width="0dp"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:layout_height="wrap_content">
                <ImageButton
                    android:id="@+id/imageButtonTwitter"
                    android:background="@drawable/twitter"
                    android:layout_width="40dp"
                    android:layout_marginRight="20dp"
                    android:layout_height="40dp"
                    android:clickable="true"
                    android:onClick="onTwitterClick"/>
            </LinearLayout>

            <LinearLayout
                android:layout_width="0dp"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:layout_height="wrap_content">
                    <ImageButton
                        android:id="@+id/imageButtonYoutube"
                        android:background="@drawable/youtube"
                        android:clickable="true"
                        android:onClick="onYoutubeClick"
                        android:layout_width="40dp"
                        android:layout_height="40dp"/>
            </LinearLayout>



        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:id="@+id/linearLayoutTrueProfileLinks"
            android:orientation="vertical"
            android:layout_marginTop="10dp"
            android:layout_height="wrap_content">

            <LinearLayout
                android:layout_width="match_parent"
                android:id="@+id/linearLayoutWebsite"
                android:visibility="gone"
                android:layout_height="wrap_content">

                <TextView
                    android:id="@+id/textViewProfilelinkWebsite"
                    android:layout_width="100dp"
                    android:layout_height="wrap_content"
                    android:paddingBottom="7dp"
                    android:paddingTop="7dp"
                    android:textSize="20sp"
                    android:singleLine="true"
                    android:text="@string/website"/>

                <EditText
                    android:id="@+id/editTextProfilelinkWebsite"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:imeOptions="actionDone"
                    android:layout_marginLeft="10dp"
                    android:singleLine="true"
                    android:inputType="text"
                    android:digits="0,1,2,3,4,5,6,7,8,9,qwertzuiopasdfghjklyxcvbnm,:,/,."
                    android:textSize="16sp"
                    android:maxLength="1024"
                    android:hint="@string/website_hint"
                    />
            </LinearLayout>


            <LinearLayout
                android:layout_width="match_parent"
                android:id="@+id/linearLayoutFaceBook"
                android:visibility="gone"
                android:layout_height="wrap_content">

                <TextView
                    android:id="@+id/textViewProfilelinkFacebook"
                    android:layout_width="100dp"
                    android:layout_height="wrap_content"
                    android:paddingBottom="7dp"
                    android:paddingTop="7dp"
                    android:textSize="20sp"
                    android:singleLine="true"
                    android:text="@string/facebook" />

                <EditText
                    android:id="@+id/editTextProfilelinkFacebook"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:singleLine="true"
                    android:imeOptions="actionDone"
                    android:inputType="text"
                    android:digits="0,1,2,3,4,5,6,7,8,9,qwertzuiopasdfghjklyxcvbnm,:,/,."
                    android:maxLength="1024"
                    android:layout_marginLeft="10dp"
                    android:textSize="16sp"
                    android:hint="@string/facebook_hint"/>


            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:id="@+id/linearLayoutInstagram"
                android:visibility="gone"
                android:layout_height="wrap_content">

                <TextView
                    android:id="@+id/textViewProfilelinkInstagram"
                    android:layout_width="100dp"
                    android:layout_height="wrap_content"
                    android:paddingBottom="7dp"
                    android:paddingTop="7dp"
                    android:textSize="20sp"
                    android:singleLine="true"
                    android:text="@string/instagram" />

                <EditText
                    android:id="@+id/editTextProfilelinkInstagram"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:singleLine="true"
                    android:imeOptions="actionDone"
                    android:inputType="text"
                    android:digits="0,1,2,3,4,5,6,7,8,9,qwertzuiopasdfghjklyxcvbnm,@"
                    android:maxLength="1024"
                    android:textSize="16sp"
                    android:hint="@string/instagram_hint"
                    />

            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:id="@+id/linearLayoutTwitter"
                android:visibility="gone"
                android:layout_height="wrap_content">

                <TextView
                    android:id="@+id/textViewProfilelinkTwitter"
                    android:layout_width="100dp"
                    android:layout_height="wrap_content"
                    android:paddingBottom="7dp"
                    android:paddingTop="7dp"
                    android:textSize="20sp"
                    android:singleLine="true"
                    android:text="@string/twitter"/>

                <EditText
                    android:id="@+id/editTextProfilelinkTwitter"
                    android:layout_width="match_parent"
                    android:layout_marginLeft="10dp"
                    android:inputType="text"
                    android:digits="0,1,2,3,4,5,6,7,8,9,qwertzuiopasdfghjklyxcvbnm,@"
                    android:layout_height="wrap_content"
                    android:singleLine="true"
                    android:imeOptions="actionDone"
                    android:maxLength="1024"
                    android:textSize="16sp"
                    android:hint="@string/twitter_hint"
                    />

            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:id="@+id/linearLayoutYoutube"
                android:visibility="gone"
                android:layout_height="wrap_content">

                <TextView
                    android:id="@+id/textViewProfilelinkYoutube"
                    android:layout_width="100dp"
                    android:layout_height="wrap_content"
                    android:paddingBottom="7dp"
                    android:paddingTop="7dp"
                    android:textSize="20sp"
                    android:singleLine="true"
                    android:text="@string/youtube"/>

                <EditText
                    android:id="@+id/editTextProfilelinkYoutube"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:inputType="text"
                    android:imeOptions="actionDone"
                    android:digits="0,1,2,3,4,5,6,7,8,9,qwertzuiopasdfghjklyxcvbnm,:,/,."
                    android:singleLine="true"
                    android:maxLength="1024"
                    android:hint="@string/youtube_hint"
                    android:textSize="16sp"
                    />

            </LinearLayout>


        </LinearLayout>

答案 2 :(得分:0)

好的,所以这里有一个如何让它发挥作用的细分。

对于每个RadioButton,我设置了一个可绘制的背景。

这个drawable是一个XML资源,有一个Root和2个子实体,一个用于checked = false,另一个用于true。

它们都指向另一个XML Drawable Resource。

第二个drawable将图标图像本身定义为位图,并禁用tileMode。

比特凌乱,对于每个单一的无线电按钮,有2个PNG图标和3个XML文件。但是,它看起来很棒!

enter image description here