是否有一种简单的方法可以在复选框控件中的复选框和相关文本之间添加填充?

我不能只添加前导空格,因为我的标签是多行。

就像,文本太接近复选框了:


当前回答

在我的情况下,我解决了这个问题使用以下复选框属性在XML:

*

android: paddingLeft = " @dimen / activity_horizontal_margin”

*

其他回答

我讨厌回答我自己的问题,但在这种情况下,我认为我需要回答。在检查之后,@Falmarri的答案是正确的。问题是Android的CheckBox控件已经使用Android:paddingLeft属性来获取文本所在的位置。

红线显示了整个CheckBox的paddingLeft偏移值

如果我重写XML布局中的填充,它就会把布局弄乱。下面是设置paddingLeft="0"的作用:

事实证明,在XML中无法解决这个问题。你必须用代码来做。下面是我的片段,硬编码填充增加10dp。

final float scale = this.getResources().getDisplayMetrics().density;
checkBox.setPadding(checkBox.getPaddingLeft() + (int)(10.0f * scale + 0.5f),
        checkBox.getPaddingTop(),
        checkBox.getPaddingRight(),
        checkBox.getPaddingBottom());

这将得到以下结果,其中绿线是填充的增加。这比硬编码一个值更安全,因为不同的设备可以为复选框使用不同的绘图。

更新-正如人们最近在下面的回答中提到的,这种行为在果冻豆(4.2)中明显发生了变化。你的应用需要检查它运行在哪个版本上,并使用适当的方法。

对于4.3+,它只是设置padding_left。详情请看htafoya的回答。

是的,您可以通过添加填充来添加填充。

android:衬垫= 5dp

如果有人需要填充周围的可绘制尝试这

        <com.google.android.material.checkbox.MaterialCheckBox
        android:id="@+id/checkbox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:button="@null"
        android:drawableStart="@drawable/button_selector"
        android:padding="@dimen/items_padding" />

我想这个能帮到你

<复选框 android: layout_width = " wrap_content " android: layout_height = " wrap_content " android: drawablePadding = " -30 dp” android: paddingLeft = " 30 dp " android: drawableLeft = " @drawable /检查” />

如果你想要一个没有代码的干净的设计,使用:

<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="CheckBox"/>

诀窍是为android: drawablleft设置颜色为透明,并为android:drawablePadding赋值。此外,透明度允许你在任何背景颜色上使用这种技术,而不会产生类似颜色不匹配的副作用。