有没有一种简单的方法可以在 CheckBox 控件中的复选框和相关文本之间添加填充?
我不能只添加前导空格,因为我的标签是多行的。
照原样,文本太接近复选框:
我讨厌回答我自己的问题,但在这种情况下,我认为我需要回答。在检查之后,@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 的答案。