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

bee*_*ear 5 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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

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" />
Run Code Online (Sandbox Code Playgroud)

像这样应用这些xml:

<SeekBar 
            android:id="@+id/seek_hist_timeline"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:progressDrawable="@drawable/seekbar_progress" />
Run Code Online (Sandbox Code Playgroud)

小智 5

使用id将另一个图层添加到图层列表drawable中 android:id/secondaryProgress

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


Nev*_*ani 5

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

<SeekBar
    android:progressTint="@color/black"
    android:thumbTint="@color/black"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)

相应地改变颜色。