ProgressBar

Rounded progress within Rounded progressbar

    <ProgressBar
        android:id="@+id/progress"
        style="@android:style/Widget.ProgressBar.Horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:indeterminate="false"
        android:progress="100"
        android:progressDrawable="@drawable/progress" />


<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="20dp" />
            <solid android:color="@android:color/transparent" />
            <stroke android:color="@color/black_20" android:width="0.5dp" />
        </shape>
    </item>
    <item android:id="@android:id/progress">
        <scale android:drawable="@drawable/custom_progress_primary"
            android:scaleWidth="90%"/>
    </item>
</layer-list>


<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <corners
        android:radius="20dp"
        android:topLeftRadius="20dp"
        android:topRightRadius="20dp" />

    <solid android:color="@color/progress_one" />
</shape>


在代碼中改變進度條的顏色

一般思路是設置了該xml文件後,直接通過

但是這樣設置無效,需要將xml中的各層都取出來,然後改變前景色

LayerDrawable ld = (LayerDrawable) mContext.getResources()
                            .getDrawable(R.drawable.vote_progress_bar_voting);
GradientDrawable gd = (GradientDrawable)ld.
                            findDrawableByLayerId(android.R.id.background);
ScaleDrawable fd = (ScaleDrawable)ld.
                            findDrawableByLayerId(android.R.id.progress);

fd.setColorFilter(redContent, PorterDuff.Mode.SRC_OVER);
progressBar.setProgressDrawable(ld);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章