2012-12-30 55 views
6

将9补丁图像用作背景时,填充看起来总是从9补丁图像派生。即使您在9修补程序映像中没有使用填充栏,它也会使用drawable。Android覆盖单侧XML中的9补丁填充

如果不包含填充行,Android将使用左侧和上侧线来定义此可绘制区域。填充= 0dp或= XDP:

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

但是你可以通过使用Android的覆盖它的XML。 不幸的是使用android:paddingLeft = Xdp不起作用。所以你坚持使用统一的填充。 我试着这样做:

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

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

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

回答

7

如果(安卓填充提交)则取代所有其他填充值 否则,如果(安卓paddingXXX提交)将覆盖BG绘制paddingXXX(XXX =左|右|首页|底部) 否则,如果(视图具有绘制BG )将使用此可绘制(您的案例中的九个补丁)的填充值 否则会应用默认填充(通常为零)

所以不要使用android:padding =“2dp”。填充属性覆盖所有内容。只需使用paddingLeft = 20dp,paddingTop = 2dp,paddingRight = 2dp,paddingBottom = 2dp。

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

+2

谢谢,我认为设置样式会像CSS一样工作。这解决了这个问题。 有问题,但如果我使用view.setBackgroundResource(9patch_background); 9patch_background重写通过XML的填充集有没有一种方法来设置背景,而不必重写XML中的填充。 – pt123

+1

你应该得到填充值,设置背景,设置旧的填充值。 – Leonidos