小编典典

Android - 复选框和文本之间的间距

all

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

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

照原样,文本太接近复选框: 替代文字


阅读 96

收藏
2022-05-04

共1个答案

小编典典

我讨厌回答我自己的问题,但在这种情况下,我认为我需要回答。在检查之后,@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());

这为您提供了以下内容,其中绿线是填充的增加。这比硬编码一个值更安全,因为不同的设备可以为复选框使用不同的可绘制对象。

替代文字

更新 - 正如人们最近在下面的答案中提到的那样,这种行为在 Jelly Bean (4.2)
中显然发生了变化。您的应用将需要检查其运行的版本,并使用适当的方法。

对于 4.3+,它只是设置 padding_left。有关详细信息,请参阅 htafoya 的答案。

2022-05-04