我正在使用Android中的Progress Bar,XML声明如下:
<ProgressBar
android:id="@+id/progress"
style="?android:attr/progressBarStyleHorizontal"
android:progressDrawable="@color/green" <!-- See below about this line -->
android:max="10000"
android:progress="10000"
android:layout_width="fill_parent"
android:layout_height="3dp"
android:layout_alignParentTop="true"/>
因此,进度条显示其完整的荣耀或其他任何东西。但我有一个ASyncTask,它会将进度条的进度重置为0,然后将其重新加载到最大值。这不起作用。相反,进度条只保持最大值。我继续记录进度条的进度,当它应该重置为0并更新时,根据进度条的getProgress()方法,它实际上转到0然后构建回到10000.当你真正看到手机虽然刚刚满了。
所以回头看看XML,你会发现我注意到android:progressDrawable这一行。这是我改变进度条颜色的地方。如果我删除该行,则进度条的行为与预期一致。但是当进度条的drawable设置为我想要的颜色时,它就会坐在屏幕上完全进度。
我之前使用过progressDrawable属性没有任何障碍,但在这种情况下,它只是让我头疼。有关如何解决这个问题的经验或想法?谢谢!
答案 0 :(得分:3)
问题是android:progressDrawable
属性。在这种情况下,您应该使用layer-list drawable。
Horizontal ProgressBar最多使用3个不同的层 - 后台,进度和secondaryProgress(在您的情况下,您不需要secondaryProgress)。由于您使用了简单的颜色,我怀疑颜色用于背景,而其他两种颜色保持不设置和透明。
你需要的只是一个像这样的抽象:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@android:id/background"
android:drawable="@android:color/transparent"/>
<item android:id="@android:id/progress">
<clip android:drawable="@color/green" />
</item>
</layer-list>