Android覆盖一侧XML的9-patch填充

pt1*_*123 6 android padding nine-patch

当使用9补丁图像作为背景时,填充似乎总是来自9补丁图像.即使你没有在9补丁图像中使用填充条,它也使用了drawable.

如果未包含填充线,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"
Run Code Online (Sandbox Code Playgroud)

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

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

Leo*_*dos 7

如果(android:padding present)它会覆盖所有其他填充值,否则if(android:paddingXXX表示)它会覆盖bg drawable paddingXXX(XXX = Left | Right | Top | Bottom)否则if(view has drawable bg)padding值来自这个drawable (将使用九个补丁),否则将应用默认填充(通常为零)

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

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

  • 谢谢,我认为设置样式将像CSS一样工作.这解决了这个问题.问题引导,但如果我使用view.setBackgroundResource(9patch_background); 9patch_background通过XML覆盖填充集是否有一种方法可以设置背景而不会覆盖XML中的填充. (2认同)