1

我有一个包含 TextView 和 CheckBox 的布局,这在我的 Galaxy Nexus (4.2.2) 上看起来与预期的一样:

Galaxy Nexus,默认 CheckBox 样式

然而,当在 Galaxy S3 和 S2 上查看时,我在 CheckBox 的顶部、右侧和底部得到一些奇怪的填充,这弄乱了整个子视图的水平对齐:

Galaxy S3,默认复选框样式

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:

Galaxy S3,自定义复选框

银河连结:

Galaxy Nexus,自定义复选框

还有其他人经历过吗?显然,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());   
}

这不太理想,但它现在可以达到目的。

4

2 回答 2

0

除了使用单独的 CheckBox 和 TextView,您可以这样做(复选框将出现在左侧,文本将在右侧填充 10dip):

<CheckBox
   android:id="@+id/checkBox1"
   android:layout_height="wrap_content"
   android:layout_width="wrap_content"
   android:drawableLeft="@android:color/transparent"
   android:drawablePadding="10dp"
   android:text="Some Text"/>

诀窍是将颜色设置为透明android:drawableLeft并为android:drawablePadding. 此外,透明度允许您在任何背景颜色上使用此技术,而不会产生副作用——比如颜色不匹配。

或者

你可以看看这个

于 2013-10-06T18:24:58.950 回答
0

银河s2也有同样的问题。在三星远程测试实验室进行了测试,结果表明 Android 版本也是相关的。似乎三星已将其修复为较新的版本。

    if (Build.MANUFACTURER.equals("samsung") && Build.MODEL.startsWith("GT-") && Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1)
于 2016-10-04T08:38:59.080 回答