Android:单选按钮的中心背景

时间:2015-03-09 06:45:18

标签: android

我需要使用带有背景图像的自定义单选按钮,并将它们均匀地水平放置,我可以实现间距但不能将背景图像定位在每个按钮的中心。我的布局如下。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="58dp">


    <RadioGroup
        android:id="@+id/group_bottom_bar"
        android:layout_width="match_parent"
        android:layout_height="52dp"

        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/v4_btn_trip"
            style="@style/BottomTabBarButtonStyle"
            android:button="@drawable/v4_tabbar_radio_trip" />

        <RadioButton
            android:id="@+id/v4_btn_agenda"
            style="@style/BottomTabBarButtonStyle"
            android:button="@drawable/v4_tabbar_radio_agenda" />

        <RadioButton
                android:id="@+id/v4_btn_favorite"
                style="@style/BottomTabBarButtonStyle"
            android:button="@drawable/v4_tabbar_radio_favorite" />

        <RadioButton
                android:id="@+id/v4_btn_settings"
                style="@style/BottomTabBarButtonStyle"
            android:button="@drawable/v4_tabbar_radio_settings" />

    </RadioGroup>


</RelativeLayout>

风格如下:

<style name="BottomTabBarButtonStyle">
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:gravity">center_horizontal</item>
        <item name="android:layout_weight">1</item>

我已经将引力设置为center_horizo​​ntal。

我尝试将android:button替换为android:background,但这只是拉伸了图片。

其中一个选择器文件(v4_tabbar_radio_trip)

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

这是它目前的状态。 更新:预期的输出是背景图像(两个点)位于灰色区域(单选按钮)的中间,而不是左对齐。同样适用于其他图标

enter image description here

4 个答案:

答案 0 :(得分:0)

尝试写

    style="@style/BottomTabBarButtonStyle" 

之后

    android:button="@drawable/v4_tabbar_radio_settings" 
布局xml文件中的

答案 1 :(得分:0)

您可以尝试此布局xml。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="58dp" >

    <RadioGroup
        android:id="@+id/group_bottom_bar"
        android:layout_width="match_parent"
        android:layout_height="52dp"
        android:orientation="horizontal" >

        <View
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1" />

        <RadioButton
            android:id="@+id/v4_btn_trip"
            android:layout_gravity="center"
            android:button="@drawable/v4_tabbar_radio_trip" />

        <View
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1" />

        <RadioButton
            android:id="@+id/v4_btn_agenda"
            android:layout_gravity="center"
            android:button="@drawable/v4_tabbar_radio_agenda" />

        <View
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1" />

        <RadioButton
            android:id="@+id/v4_btn_favorite"
            android:layout_gravity="center"
            android:button="@drawable/v4_tabbar_radio_favorite" />

        <View
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1" />

        <RadioButton
            android:id="@+id/v4_btn_settings"
            android:layout_gravity="center"
            android:button="@drawable/v4_tabbar_radio_settings" />

        <View
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1" />
    </RadioGroup>

</LinearLayout>

我知道这不是处理事情的好方法,但它可以为你做一个技巧,它对所有屏幕都是可行的。

试试吧。希望这会对你有所帮助。

答案 2 :(得分:0)

试试这个!!

<LinearLayout
            android:id="@+id/ll_radio_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_centerHorizontal="true"
            android:gravity="center_horizontal"
            android:layout_marginBottom="5dp"
            android:weightSum="2" >

            <RadioGroup
                android:id="@+id/radioGrouprecharge"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >

                <RadioButton
                    android:id="@+id/radioPreapaid"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="@android:color/transparent"
                    android:button="@android:drawable/btn_radio" />

                <RadioButton
                    android:id="@+id/radIoPostpaid"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_weight="1"
                    android:gravity="center_horizontal" />
            </RadioGroup>
        </LinearLayout>

答案 3 :(得分:0)

您将按钮居中,但是绘图始终是左对齐的。

解决方案似乎是创建一个新的广播组。 Here is an example.