问题

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

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

按原样,文字太靠近复选框: alt text



解决方法

我讨厌回答自己的问题,但在这种情况下,我想我需要.检查出来后,@Falmarri在他的答案在正确的轨道.问题是,Android的CheckBox控件已经使用了android:paddingLeft属性来获取文本.

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

alt text

如果我只是重写了我的XML布局中的填充,它弄乱了布局.以下是设置paddingLeft ="0"的操作:

alt text

原来你不能在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());

这给出以下内容,其中绿线是填充的增加.这比硬编码值更安全,因为不同的设备可以使用不同的可绘制的复选框.

alt text

UPDATE - 正如人们最近在下面的答案中提到的,这种行为在Jelly Bean中显然已经改变了(4.2).您的应用程式需要检查其执行的版本,并使用适当的方法.




相关问题推荐