我不想回答我自己的问题,但在这种情况下,我想我需要回答.在判断之后,@Falmarri的答案是正确的.问题是Android的CheckBox控件已经使用android:paddingLeft属性来获取文本.
红线显示整个复选框的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的答案.