Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android覆盖一侧XML中的9-patch填充_Android_Padding_Nine Patch - Fatal编程技术网

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

Android覆盖一侧XML中的9-patch填充,android,padding,nine-patch,Android,Padding,Nine Patch,当使用9面片图像作为背景时,填充似乎总是源自9面片图像。即使在9面片图像中不使用填充条,它也会使用可绘制的 如果不包括填充线,Android将使用左行和顶行来定义此可绘制区域 但是,您可以使用android:padding=0dp或=Xdp在XML中重写它。 不幸的是,使用android:paddingLeft=Xdp无法工作。所以你只能用统一的填充物。 我试着这样做: android:padding="2dp" android:paddingLeft="20dp" 它对左边的填充物

当使用9面片图像作为背景时,填充似乎总是源自9面片图像。即使在9面片图像中不使用填充条,它也会使用可绘制的

如果不包括填充线,Android将使用左行和顶行来定义此可绘制区域

但是,您可以使用android:padding=0dp或=Xdp在XML中重写它。 不幸的是,使用android:paddingLeft=Xdp无法工作。所以你只能用统一的填充物。 我试着这样做:

  android:padding="2dp"
  android:paddingLeft="20dp"
它对左边的填充物没有影响。将它们放在styles.xml中会产生类似的结果

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

如果(android:padding presented)它将覆盖所有其他填充值 否则(显示android:paddingXXX)将覆盖bg可绘制paddingXXX(XXX=左|右|上|下) 否则,如果(视图具有可绘制bg),将使用此可绘制(在您的情况下为九个补丁)中的填充值 否则将应用默认填充(通常为零)

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


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

谢谢,我认为设置样式会像CSS一样工作。这就解决了问题。关于问题的线索,但如果我使用view.setBackgroundResource(9patch_background);9patch_后台通过XML覆盖填充集有没有一种方法可以在不覆盖XML中填充的情况下设置后台。您应该获取填充值,设置后台,然后再设置旧的填充值。