我需要使用带有背景图像的自定义单选按钮,并将它们均匀地水平放置,我可以实现间距但不能将背景图像定位在每个按钮的中心。我的布局如下。
<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_horizontal。
我尝试将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>
这是它目前的状态。 更新:预期的输出是背景图像(两个点)位于灰色区域(单选按钮)的中间,而不是左对齐。同样适用于其他图标
答案 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.