我有一个包含 TextView 和 CheckBox 的布局,这在我的 Galaxy Nexus (4.2.2) 上看起来与预期的一样:
然而,当在 Galaxy S3 和 S2 上查看时,我在 CheckBox 的顶部、右侧和底部得到一些奇怪的填充,这弄乱了整个子视图的水平对齐:
XML 布局:
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ll_vert"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
<LinearLayout
android:id="@+id/ll_horz"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="5dp" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:text="Some Text"
android:textSize="14sp" />
<CheckBox
android:id="@+id/cb"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
如果我将选择器用于自定义复选框资源(我最终尝试这样做),则更加明显:
<CheckBox
android:id="@+id/cb"
android:gravity="center"
android:button="@drawable/selector_checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
银河 S3:
银河连结:
还有其他人经历过吗?显然,gravity="center" 似乎对 TouchWiz 没有影响......
编辑 2013 年 9 月 10 日-
我破解了一个修复程序
if (android.os.Build.MANUFACTURER.equals("samsung") && android.os.Build.MODEL.startsWith("GT-")) {
LinearLayout llHorz = (LinearLayout)view.findViewById(R.id.ll_horz);
llHorz.setPadding(Math.round(getResources().getDisplayMetrics().density * 20f), llHorz.getPaddingTop(), llHorz.getPaddingRight(), llHorz.getPaddingBottom());
}
这不太理想,但它现在可以达到目的。