【问题标题】:Android horizontal progress bar not updating view, though progress is changingAndroid水平进度条不更新视图,虽然进度正在改变
【发布时间】:2012-08-14 09:20:01
【问题描述】:

我正在使用 Android 中的进度条,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 行。这是我更改进度条颜色的地方。如果我删除该行,进度条将按预期运行。但是,当进度条的可绘制对象设置为我想要的颜色时,它只是坐在那里,屏幕上会显示完整的进度。

我之前使用过这个progressDrawable 属性没有任何问题,但在这种情况下,它只是让我很头疼。有关如何解决此问题的任何经验或想法?谢谢!

【问题讨论】:

    标签: android progress-bar


    【解决方案1】:

    问题在于android:progressDrawable 属性。在这种情况下,您应该使用layer-list drawable

    Horizo​​ntal ProgressBar 最多使用 3 个不同的层 - 背景、进度和 secondaryProgress(您不需要 secondaryProgress)。由于您使用了简单的颜色,我怀疑该颜色用于背景,而其他两种颜色保持未设置且透明。

    你只需要一个像这样的drawable:

    <?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>
    

    【讨论】:

    • 当然……我现在想起来了。希望这个问题将有助于将来帮助某人。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多