Android覆盖一侧XML中的9-patch填充
当使用9面片图像作为背景时,填充似乎总是源自9面片图像。即使在9面片图像中不使用填充条,它也会使用可绘制的 如果不包括填充线,Android将使用左行和顶行来定义此可绘制区域 但是,您可以使用android:padding=0dp或=Xdp在XML中重写它。 不幸的是,使用android:paddingLeft=Xdp无法工作。所以你只能用统一的填充物。 我试着这样做: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" 它对左边的填充物
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中填充的情况下设置后台。您应该获取填充值,设置后台,然后再设置旧的填充值。