我在Android应用程序中使用自定义进度条drawable for horizontal progress bar。这是一个两层的可绘制的。第一层是带有tileMode="repeat"
的对角条纹png图像。第二层在条纹上添加阴影。这就是progress_bar_horizontal.xml drawable的样子:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/progress">
<clip>
<layer-list>
<item>
<bitmap android:src="@drawable/diagonal_stripes_0" android:tileMode="repeat" />
</item>
<item>
<nine-patch android:src="@drawable/inset_shadow" />
</item>
</layer-list>
</clip>
</item>
</layer-list>
此drawable在主题中用于重新设置进度条控件:
<style name="Theme.Custom" parent="android:Theme.Light">
<item name="android:progressBarStyleHorizontal">@style/Widget.ProgressBar.Horizontal.Custom</item>
</style>
<style name="Widget.ProgressBar.Horizontal.Custom" parent="android:Widget.ProgressBar.Horizontal">
<item name="android:background">@drawable/bg_inset_gray</item>
<item name="android:progressDrawable">@drawable/progress_bar_horizontal</item>
<item name="android:indeterminateDrawable">@drawable/progress_bar_indeterminate_horizontal</item>
</style>
这个想法是制作一个对角条纹的进度条,它不会拉伸,但随着操作的进行会增加宽度。这就是使用<clip>
的原因。
大部分时间都可以正常工作。然而,不时(没有任何机会有意复制)它开始拉伸drawable的单个tile而不是适当地剪裁它。
该应用程序使用android:minSdkVersion="7"
开发,并在HTC Desire和Android 2.2上运行。
任何帮助都将不胜感激。