我底部有一个RadioGroup,有四个按钮作为我的应用程序的导航(我知道这对于Android应用程序来说是非标准的,但它是客户想要的)。这是它的外观:
这在我的Nexus 7上看起来很好,在我的IDE中的模拟器和预览中看起来很好。但是,当我将它加载到Galaxy S Note 2时,它的外观如下:
图像被截止,因为它们似乎被“移动”到这个特定设备的右侧。我觉得在较小的设备上,它会更加偏斜和截止。当我手动做一个约35dp的负左边距时,它实际上看起来很完美并且它们对齐很好(但当然该解决方案对其他设备不起作用)。
奇怪的是,我的代码似乎没有做任何特别的事情,而且看起来非常简单。仅供参考,即使我将其更改为仅三个按钮,仍然将按钮向右移动,而不是真正居中(尽管只有3个按钮时它们不会被切断)。我无法弄清楚为什么它会这样做,无论我通过调整重力,重量,甚至交换图像来尝试多少事情。我目前只使用/ xhdpi图像,每个图像的大小各约为130x130。
供参考,这是我的布局文件中RadioGroup的基础代码(它在RelativeLayout中):
<RadioGroup
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/tab_radio_group"
android:layout_alignParentBottom="true"
android:orientation="horizontal"
android:background="@drawable/navigation_base"
android:paddingTop="15dp">
<RadioButton
android:id="@+id/button_scan"
style="@style/navbar_button"
android:drawableTop="@drawable/scan"/>
<RadioButton
android:id="@+id/button_view_order"
style="@style/navbar_button"
android:drawableTop="@drawable/view_order"/>
<RadioButton
android:id="@+id/button_complete_order"
style="@style/navbar_button"
android:drawableTop="@drawable/complete_order"/>
<RadioButton
android:id="@+id/button_settings"
style="@style/navbar_button"
android:drawableTop="@drawable/settings"/>
</RadioGroup>
这是navbar_button的样式元素:
<style name="navbar_button">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:button">@null</item>
<item name="android:gravity">center_horizontal</item>
<item name="android:layout_weight">1</item>
<item name="android:textSize">12dp</item>
</style>
我可能会遗漏一些明显的东西,但是对此有什么看法?提前谢谢!
答案 0 :(得分:2)
为了解决这个问题,我最终不得不放弃RadioGroup和RadioButtons,然后我选择了带按钮的简单线性布局。它仍然用于相对简单的代码,它只涉及更改Java代码以使用普通按钮而不是RadioButtons。如果感兴趣的话,这是改变的布局:
<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/tab_radio_group"
android:layout_alignParentBottom="true"
android:orientation="horizontal"
android:background="@drawable/navigation_base"
android:paddingTop="15dp">
<Button
android:id="@+id/button_scan"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@android:color/transparent"
android:drawableTop="@drawable/scan"/>
<Button
android:id="@+id/button_view_order"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@android:color/transparent"
android:drawableTop="@drawable/view_order"/>
<Button
android:id="@+id/button_complete_order"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@android:color/transparent"
android:drawableTop="@drawable/complete_order"/>
<Button
android:id="@+id/button_settings"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@android:color/transparent"
android:drawableTop="@drawable/settings"/>
</LinearLayout>
答案 1 :(得分:0)
不确定这是否是唯一的问题,但我发现在功能setButtonDrawable()
中有一个setMinHeight(mButtonDrawable.getIntrinsicHeight());
来电,但没有拨打setMinWidth()
,所以我延长了RadioButton
类,并覆盖了这样的函数:
@Override
public void setButtonDrawable(Drawable d) {
super.setButtonDrawable(d);
if (d != null) {
setMinWidth(d.getIntrinsicWidth());
refreshDrawableState();
}
}