6

当使用 9-patch 图像作为背景时,填充似乎总是源自 9-patch 图像。即使您在 9 个补丁图像中不使用填充条,它也会使用可绘制对象。

如果不包括填充线,Android 使用左边和顶线来定义这个可绘制区域。

http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch

但是,您可以使用 android:padding=0dp 或 =Xdp 在 XML 中覆盖它。不幸的是,使用 android:paddingLeft=Xdp 不起作用。所以你被统一的填充所困。我试过这样做:

  android:padding="2dp"
  android:paddingLeft="20dp"

它对左侧的填充没有影响。将它们放在 styles.xml 中会产生类似的结果。

我见过的唯一解决此问题的方法是在代码中设置填充。

4

1 回答 1

7

if (android:padding present) 它覆盖所有其他填充值 else if (android:paddingXXX present) 它覆盖 bg drawable paddingXXX (XXX = Left|Right|Top|Bottom) else if (view has drawable bg) padding values from this drawable (在您的情况下为九个补丁)将被使用,否则将应用默认填充(通常为零)

所以不要使用 android:padding="2dp"。padding 属性覆盖所有内容。只需使用 paddingLeft = 20dp、paddingTop = 2dp、paddingRight = 2dp、paddingBottom = 2dp。

或者您可以设置 paddingLeft = 20dp 并且其他填充值将从 bg drawable 中获取。

于 2012-12-30T23:13:33.853 回答