Android自定义水平进度条位图drawable得到拉伸

时间:2011-09-12 15:22:19

标签: android layout android-layout progress-bar

我在Android应用程序中使用自定义进度条drawable for horizo​​ntal progress bar。这是一个两层的可绘制的。第一层是带有tileMode="repeat"的对角条纹png图像。第二层在条纹上添加阴影。这就是progress_bar_horizo​​ntal.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上运行。

任何帮助都将不胜感激。

0 个答案:

没有答案