美文网首页
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