美文网首页
ProgressBar 修改progressDrawable 出

ProgressBar 修改progressDrawable 出

作者: 搬砖的乐趣 | 来源:发表于2017-06-29 13:11 被阅读0次

在最近的项目中,遇到多个颜色progressBar,这就需要修改ProgressBar颜色了,虽然在API 21以后有android:progressTint可以修改,不过不兼容低版本。
网上查找到可以使用android:progressDrawable属性定义一个layer-list做为ProgressBar的drawable,照着网上的写了一个layer_progress_bg.xml

<?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="@color/grey_bg" />
    <item android:id="@android:id/progress">
        <shape>
            <solid android:color="@color/progress" />
        </shape>
    </item>
</layer-list>

然后给progressBar设置

<ProgressBar
        style="@style/Widget.AppCompat.ProgressBar.Horizontal"
        android:layout_width="match_parent"
        android:layout_height="4dp"
        android:layout_marginTop="4dp"
        android:layout_marginBottom="4dp"
        android:max="100"
        android:progress="50"
        android:progressDrawable="@drawable/layer_progress_bg" />

结果运行一看

image.png
什么鬼,为什么我的progress 是50,进度条就充满了,在网上查了很久,终于找到了这片文章http://blog.csdn.net/u012528526/article/details/50186517

发现原来这个写法是错误的:

<item android:id="@android:id/progress">
        <shape>
            <solid android:color="@color/progress" />
        </shape>
    </item>

正确的写法应该是这样

<item android:id="@android:id/progress">
        <clip>
            <shape>
                <solid android:color="@color/progress"/>
            </shape>
        </clip>
    </item>

secondaryProgress和progress两个项目使用自定义drawable时要使用<scale/>或者</clip>子项,否则进度条会一直显示满的状态
其实问题出在,我没有对着网上的代码,一个个敲,漏掉了一个</clip>

相关文章

网友评论

      本文标题:ProgressBar 修改progressDrawable 出

      本文链接:https://www.haomeiwen.com/subject/njymcxtx.html