自定义SeekBar,可在缓冲时更改进度颜色和背景颜色

时间:2014-01-31 05:59:08

标签: android colors seekbar android-styles


我想构建一个具有辅助进度条的自定义SeekBar,但默认情况下是从端到端显示缓冲数据的进度。

将其视为大多数在线视频播放器提供的搜索条,例如YouTube上。总而言之,我们有默认的搜索栏,默认的进度条和一个辅助进度条,它可以填充颜色,而不管主进度/用户拖动搜索条的缺口,只依赖于缓冲数据。

直到现在我只有正常的搜索栏,它会改变用户拖动/设置进度的颜色。
有人可以帮忙吗?

到目前为止我的代码:
seekbar_progress.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="@drawable/progress_background_fill"/>
    <item android:id="@android:id/progress">
        <clip android:drawable="@drawable/progress_fill" />
    </item>

</layer-list>

progress_fill.xml

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

    <gradient
        android:angle="180"
        android:centerColor="#FFB80000"
        android:endColor="#FFFF4400"
        android:startColor="#FF470000" />

    <corners android:radius="5px" />

    <stroke
        android:width="2dp"
        android:color="#50999999" />
    <stroke
        android:width="1dp"
        android:color="#70555555" />

</shape>

progress_background_fill.xml

<gradient
    android:angle="90"
    android:centerColor="#FF555555"
    android:endColor="#FF555555"
    android:startColor="#FF555555" />

<corners android:radius="5px" />

<stroke
    android:width="2dp"
    android:color="#50999999" />
<stroke
    android:width="1dp"
    android:color="#70555555" />

像这样应用这些xml:

<SeekBar 
            android:id="@+id/seek_hist_timeline"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:progressDrawable="@drawable/seekbar_progress" />

2 个答案:

答案 0 :(得分:5)

使用ID为android:id/secondaryProgress

的图层列表drawable添加另一个图层

请参阅此答案:https://stackoverflow.com/a/2021119/2951003

答案 1 :(得分:2)

这是您的答案。 只需在xml的seekbar标记中添加两行

<SeekBar
    android:progressTint="@color/black"
    android:thumbTint="@color/black"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

相应地更改颜色。