我的进度条有这个可绘制的:
<item android:id="@android:id/background" android:top="5dp">
<shape>
<gradient
android:angle="270"
android:centerColor="@color/gray11"
android:centerY="0.75"
android:endColor="@color/gray11"
android:startColor="@color/gray11" />
</shape>
</item>
<item android:id="@android:id/secondaryProgress" android:top="5dp">
<clip>
<shape>
<gradient
android:angle="270"
android:centerColor="@color/blue1"
android:centerY="0.75"
android:endColor="@color/blue1"
android:startColor="@color/blue1" />
</shape>
</clip>
</item>
<item android:id="@android:id/progress" android:top="5dp">
<clip>
<shape>
<gradient
android:angle="270"
android:endColor="@color/blue1"
android:startColor="@color/blue1" />
</shape>
</clip>
</item>
我想向下移动drawable,所以我添加了android:top =“5dp”,但填充(向下移动)没有应用,我无法理解。
答案 0 :(得分:2)
这可能为时已晚,但我会在此处发布此信息,以便将来遇到此问题的任何人都会遇到这个问题。
在Marshmallow之前,有一个错误,当LayerDrawable
用作进度可绘制时,忽略了LayerDrawable
的子项上的某些属性。该错误实际上位于ProgressBar
,其中android:progressDrawable
的值将通过tileify
方法运行,该方法将重新生成LayerDrawable
,但无法复制某些属性(最值得注意的是填充物。)
您可以在AOSP here中看到此修复程序。
此问题最简单的解决方法是从代码中调用setProgressDrawable
而不是提供android:progressDrawable
。由于setProgressDrawable
没有调用tileify
(并且因为tileify
对于没有BitmapDrawable
)的所有情况也可能是无操作的,所以你&# 39;保留你的填充物和其他属性。
但请注意,如果您的进度抽取包含bitmap
/ BitmapDrawable
,您可能需要自己实施tileify
的一部分,以确保您获得相同的平铺行为来自xml(或者,在Lollipop及以上,你可以调用setProgressDrawableTiled
)。
答案 1 :(得分:0)
&lt;&lt;&lt;&lt; item&gt;标签。它只是没有解析或包含它,因为在那里做它没有多大意义。
正确设置填充应作为子项包含在您的&lt;形状&gt;像这样的标签:
<item android:id="@android:id/progress">
<clip>
<shape>
<padding
android:top="5dp" />
<gradient
android:angle="270"
android:endColor="@color/blue1"
android:startColor="@color/blue1" />
</shape>
</clip>
</item>