Seek bar, change path color from yellow to white

后端 未结 7 592
野性不改
野性不改 2020-11-27 12:29

I have two questions:

1) how do I change the color of the seek bar (path) from yellow (the default color) to white. What I mean to say is, while I slide the thumb ,

相关标签:
7条回答
  • 2020-11-27 13:02
    seekBar.getProgressDrawable().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
    seekBar.getThumb().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
    
    0 讨论(0)
  • 2020-11-27 13:07

    I want to complete the answer from above for the people who are new to the system,

    the missing xmls ( background_fill , progress_fill and progress could look like that for a gradient red

    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/background_fill" />
    
            <item android:id="@android:id/progress">
               <clip android:drawable="@drawable/progress_fill" />
            </item>
      </layer-list>
    

    background_fill.xml

    <shape xmlns:android="http://schemas.android.com/apk/res/android">
        <gradient 
            android:startColor="#FF555555" 
            android:centerColor="#FF555555"
            android:endColor="#FF555555" 
            android:angle="90" />
    
        <corners android:radius="5px" />
    
        <stroke 
            android:width="2dp" 
            android:color="#50999999" />
    
        <stroke 
            android:width="1dp" 
            android:color="#70555555" />
    </shape>
    

    progress_fill.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android">
        <gradient 
            android:startColor="#FF470000" 
            android:centerColor="#FFB80000"
            android:endColor="#FFFF4400" 
            android:angle="180" />
    
        <corners android:radius="5px" />
    
        <stroke 
                android:width="2dp" 
                android:color="#50999999" />
    
        <stroke 
                android:width="1dp" 
                android:color="#70555555" />
    </shape>
    

    i did not complete the implementing for android:thumb, so the thumb will be still the original one

    Therefore we just have to delete this line again from our layout xml where we define the seekbar

    android:thumb="@drawable/thumb"
    

    Good luck!!!

    0 讨论(0)
  • 2020-11-27 13:07

    You should set SeekBar XML properties:

    <SeekBar 
                ....
        android:progressDrawable="@drawable/progress"
        android:thumb="@drawable/thumb"
                ....
    />
    

    Where progress is something like this:

    <?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/background_fill" />
    
    <item android:id="@android:id/progress">
        <clip android:drawable="@drawable/progress_fill" />
    </item>
    </layer-list> 
    

    and thumb is

    <?xml version="1.0" encoding="utf-8"?>    
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
       <item android:drawable="@drawable/thumb_fill" />
    </selector>
    
    0 讨论(0)
  • 2020-11-27 13:10

    1. Create a drawable XML: Name it : progress_drawable

    <?xml version="1.0" encoding="UTF-8"?>
    
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
      android:shape="line">
    
    <stroke android:width="1dp" android:color="#fff"/>
    
    </shape>
    

    2. Assign it to Seekbar

                <SeekBar
                        android:id="@+id/slider_1"
                        android:progressDrawable="@drawable/progress_drawable"
                        android:layout_width="180dp"
                        android:layout_height="32dp"
                        android:layout_gravity="center"
                        android:rotation="270" />
    
    0 讨论(0)
  • 2020-11-27 13:19

    You can just add tint from API level 21.

    Add these properties to seekbar element:

    android:progressTint="@android:color/white" android:thumbTint="@android:color/white"

    Final result:

    <SeekBar
        android:id="@+id/is"
        android:layout_width="match_parent"
        android:max="100"
        android:progressTint="@android:color/white"
        android:thumbTint="@android:color/white"/>
    
    0 讨论(0)
  • 2020-11-27 13:19

    Just change the accent color of your style

    <style name="TickMarkSeekBar" parent="Theme.KefTheme">
            <item name="tickMark">@drawable/tickmark</item>
            <item name="thumbTint">@android:color/white</item>
            <item name="colorAccent">@android:color/white</item>
        </style>
    
    0 讨论(0)
提交回复
热议问题