Android - barra di ricerca dello stile


229

Volevo progettare una barra di ricerca che assomigli a quella nell'immagine qui sotto.

inserisci qui la descrizione dell'immagine

Usando la seekbar predefinita otterrò qualcosa del genere:

inserisci qui la descrizione dell'immagine

Quindi quello di cui ho bisogno è solo cambiare il colore. Non ho bisogno di stili extra. Esiste un approccio diretto per fare questo o dovrei costruire il mio disegno personalizzato.?

Ho provato a costruirne uno personalizzato, ma non sono riuscito a ottenere quello esatto come mostrato sopra. Dopo aver usato il disegno personalizzato, quello che ottengo è come mostrato di seguito:

inserisci qui la descrizione dell'immagine

Se devo creare quello personalizzato, suggerisci come ridurre la larghezza della linea di avanzamento e anche la forma.

la mia implementazione personalizzata:

background_fill.xml:

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

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

    <corners android:radius="1dp" />

    <stroke
        android:width="1dp"
        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:angle="90"
        android:centerColor="#FFB80000"
        android:endColor="#FFFF4400"
        android:startColor="#FF470000" />

    <corners android:radius="1dp" />

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

</shape>

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>

thumb.xml

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

    <gradient
        android:angle="270"
        android:endColor="#E5492A"
        android:startColor="#E5492A" />

    <size
        android:height="20dp"
        android:width="20dp" />

</shape>

SeekBar:

<SeekBar
        android:id="@+id/seekBarDistance"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="88dp"
        android:progressDrawable="@drawable/progress"
        android:thumb="@drawable/thumb" >
    </SeekBar>

40
Grazie per aver mostrato un esempio di modifica dello stile di seekbar funzionante XD. (non molti su Internet).
Helin Wang,

Risposte:


297

Vorrei estrarre drawable e xml dal codice sorgente Android e cambiare il suo colore in rosso. Ecco un esempio di come ho completato questo per i drawable mdpi:

Personalizzato red_scrubber_control.xml(aggiungi a res / disegnabile):

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/red_scrubber_control_disabled_holo" android:state_enabled="false"/>
    <item android:drawable="@drawable/red_scrubber_control_pressed_holo" android:state_pressed="true"/>
    <item android:drawable="@drawable/red_scrubber_control_focused_holo" android:state_selected="true"/>
    <item android:drawable="@drawable/red_scrubber_control_normal_holo"/>
</selector>

personalizzato: red_scrubber_progress.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@android:id/background"
        android:drawable="@drawable/red_scrubber_track_holo_light"/>
    <item android:id="@android:id/secondaryProgress">
        <scale
            android:drawable="@drawable/red_scrubber_secondary_holo"
            android:scaleWidth="100%" />
    </item>
    <item android:id="@android:id/progress">
        <scale
            android:drawable="@drawable/red_scrubber_primary_holo"
            android:scaleWidth="100%" />
    </item>

</layer-list>

Quindi copia i drawable richiesti dal codice sorgente Android, ho preso da questo link

È bene copiare questi drawable per ogni hdpi, mdpi, xhdpi. Ad esempio uso solo mdpi:

Quindi usando Photoshop cambia colore dal blu al rosso:

red_scrubber_control_disabled_holo.png: red_scrubber_control_disabled_holo

red_scrubber_control_focused_holo.png: red_scrubber_control_focused_holo

red_scrubber_control_normal_holo.png: red_scrubber_control_normal_holo

red_scrubber_control_pressed_holo.png: red_scrubber_control_pressed_holo

red_scrubber_primary_holo.9.png: red_scrubber_primary_holo.9

red_scrubber_secondary_holo.9.png: red_scrubber_secondary_holo.9

red_scrubber_track_holo_light.9.png: red_scrubber_track_holo_light.9

Aggiungi SeekBar al layout:

<SeekBar
    android:id="@+id/seekBar1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:progressDrawable="@drawable/red_scrubber_progress"
    android:thumb="@drawable/red_scrubber_control" />

Risultato:

inserisci qui la descrizione dell'immagine


Andrew, grazie per l'ottima risposta. Sto avendo un problema con questo. Quando uso il red_scrubber_controldisegno per il pollice, mi imbatto in un incidente. Se tutti i drawable nel selettore sono uguali, funziona benissimo, ma se cambio uno di essi, ottengo un Resources$NotFoundException: File .../red_scrubber_control.xml from drawaable resource ID...Pensieri?
karl

2
Ops. Si scopre che era correlato a stackoverflow.com/questions/6669296/… . La nuova immagine che stavo cercando di aggiungere era accidentalmente 37 MB anziché 2 KB ...
karl

Esiste comunque un modo @dimenper impostare la dimensione del pollice in base allo schermo?
Si8,

1
@ SiKni8 È possibile definire dimensioni diverse per dimensioni dello schermo diverse in base a parametri normali, grandi, xlarge, sw o w per la cartella dei valori. Quindi usa semplicemente questa dimensione nel tuo layout, stile o tema. Controlla questo link
andrew

1
Grazie per il link al generatore di colori Android Holo. Questo è molto utile.
Alberi

66

La mia risposta è ispirata dalla risposta di Andras Balázs Lajtha che consente di lavorare senza file xml

seekBar.getProgressDrawable().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
seekBar.getThumb().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);

Il colore della finestra di dialogo di avanzamento è cambiato, ma il colore dei pollici non ha ... perché?
Yonatan Nir,

7
Se non è necessario eseguire questa operazione nel codice e non si desidera creare elenchi di livelli, disegni disegnabili, ecc., È possibile farlo anche nell'xml di seekbar android:progressTint="@color/my_color" android:thumbTint="@color/another_color"
Daveloper87,

59

Se vuoi esattamente la stessa barra ma in rosso, puoi aggiungere un filtro colore PorterDuff a livello di codice. È possibile ottenere ogni disegno che si desidera colorare tramite i metodi della classe base ProgressBar . Quindi impostare un filtro colore per esso.

mySeekBar.getProgressDrawable().setColorFilter(new PorterDuffColorFilter(srcColor, PorterDuff.Mode.MULTIPLY));

Se la regolazione del colore desiderata non può essere effettuata tramite un filtro Porter Duff, è possibile specificare il proprio filtro colore .


3
non sono sicuro da quale SDK, proly 21, ma se vuoi la stessa icona solo di un colore diverso, aggiungi il colore "colorAccent" in colors.xml e lo userà
Tibet

57

Stile materiale personalizzato seekbar Android, per altre personalizzazioni seekbar http://www.zoftino.com/android-seekbar-and-custom-seekbar-examples

<style name="MySeekBar" parent="Widget.AppCompat.SeekBar">
    <item name="android:progressBackgroundTint">#f4511e</item>
    <item name="android:progressTint">#388e3c</item>
    <item name="android:colorControlActivated">#c51162</item>
</style>

stile materiale personalizzato seekbar


2
Ottima soluzione per Android> 21
saltandpepper

4
Sei sicuro che colorControlActivatedsia il parametro giusto per il pollice? Dovrebbe essere thumbTint.
Peter Knut,

Qual è la soluzione per l'API 21 sottostante?
Faisal Shaikh,

42

Sostituisci semplicemente gli attributi di colore con il tuo colore

background.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="line">

    <stroke android:width="1dp" android:color="#D9D9D9"/>
    <corners android:radius="1dp" />

</shape>

progress.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="line">

    <stroke android:width="1dp" android:color="#2EA5DE"/>
    <corners android:radius="1dp" />

</shape>

style.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@android:id/background"
        android:drawable="@drawable/seekbar_background"/>
    <item android:id="@android:id/progress">
        <clip android:drawable="@drawable/seekbar_progress" />
    </item>

</layer-list>

thumb.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">

    <size android:height="30dp" android:width="30dp"/>
    <stroke android:width="18dp" android:color="#882EA5DE"/>
    <solid android:color="#2EA5DE" />
    <corners android:radius="1dp" />

</shape>

1
Come posso usare i file in una seekbar?
mungaih pk,

@RahulRastogi come hai usato questi file? Un
po

1
@AssortedTrailmix L'ho fatto molto tempo fa. Prova a impostare attributi come: android: thumb = "@ drawable / thumb" e in android: progressDrawable la proprietà imposta il file drawable dell'elenco dei livelli sopra menzionato. Puoi provare: mindfiremobile.wordpress.com/2014/05/05/20/…
Rahul Rastogi,

37

Google ha reso tutto più semplice in SDK 21. Ora abbiamo gli attributi per specificare i colori della tinta del pollice:

android:thumbTint
android:thumbTintMode
android:progressTint

http://developer.android.com/reference/android/widget/AbsSeekBar.html#attr_android:thumbTint http://developer.android.com/reference/android/widget/AbsSeekBar.html#attr_android:thumbTintMode


7
progressTint, anche.
afollestad,

1
Gli elenchi di tinte si applicano a tutti gli elementi dell'interfaccia utente su Android a partire dall'API 21, è come viene applicato colorAccent.
afollestad,

16

Tutte queste risposte sono deprecate.

Nel 2019 è più facile modellare la tua seekbar sul tuo colore preferito cambiando il tuo ProgressBarin questo

<SeekBar
            android:id="@+id/seekBar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:progressTint="#36970f"
            android:thumbTint="#36970f"
            />

Per lo styling del colore seekbar provare a livello di codice il codice seguente

        seekBar.getProgressDrawable().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
        seekBar.getThumb().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);

Perché deprecato?
CoolMind

perché le biblioteche sono cambiate
Giannis Mpountouridis,

È possibile vedere la risposta di @Ahamadullah Saikat ( stackoverflow.com/a/50074961/2914140 ) o lvguowei.me/post/customize-android-seekbar-color . Non usano le librerie e impostano i colori di SeekBar anche per le vecchie API.
CoolMind,

11

Come menzionato sopra (@andrew), la creazione di SeekBar personalizzati è semplicissima con questo sito - http://android-holo-colors.com/

Abilita SeekBar lì, scegli il colore e ricevi tutte le risorse e copia nel progetto. Quindi applicali in XML, ad esempio:

  android:thumb="@drawable/apptheme_scrubber_control_selector_holo_light"
  android:progressDrawable="@drawable/apptheme_scrubber_progress_horizontal_holo_light"

10

produzione:

inserisci qui la descrizione dell'immagine

nel file di layout:

        <android.support.v7.widget.AppCompatSeekBar
            android:id="@+id/seekBar_bn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:max="25"
            android:minHeight="10dp"
            android:progress="10"
            android:progressDrawable="@drawable/progress"
            android:thumb="@drawable/custom_thumb" />

drawable / 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>

drawable / background_fill.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:bottom="6dp"
        android:left="-6dp"
        android:right="-6dp"
        android:top="6dp">

        <shape android:shape="rectangle">
            <solid android:color="#888888" />
            <stroke
                android:width="5dp"
                android:color="@android:color/transparent" />
        </shape>
    </item>
</layer-list>

drawable / progress_fill.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:bottom="6dp"
        android:left="-6dp"
        android:right="-6dp"
        android:top="6dp">

        <shape android:shape="rectangle">
            <solid android:color="@color/myPrimaryColor" />
            <stroke
                android:width="5dp"
                android:color="@android:color/transparent" />
        </shape>
    </item>
</layer-list>

drawable / custom_thumb.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="oval">
            <solid android:color="@color/myPrimaryColor"/>
            <size
                android:width="22dp"
                android:height="22dp"/>
        </shape>
    </item>
</layer-list>

colors.xml

<color name="myPrimaryColor">#660033</color>

1
non sapevo che AppCompat Seekbar esistesse
Pierre,


9
<SeekBar
android:id="@+id/seekBar1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:progressTint="@color/red"
android:thumbTint="@color/red" />

funziona allo stesso modo della risposta selezionata. non c'è bisogno di creare file disegnabili o altro (solo IN 5.0) Saluti


5

Per impostazione predefinita, Android abbinerà il colore di avanzamento del dispositivo di scorrimento a

`<item name="colorAccent">`

valore nel tuo styles.xml . Quindi, per impostare un'immagine di scorrimento del cursore personalizzata, basta usare questo codice nel blocco del layout xml di SeekBar :

android:thumb="@drawable/slider"

5
LayerDrawable progressDrawable = (LayerDrawable) mSeekBar.getProgressDrawable();

// progress bar line *progress* color
Drawable processDrawable = progressDrawable.findDrawableByLayerId(android.R.id.progress);

// progress bar line *background* color
Drawable backgroundDrawable = progressDrawable.findDrawableByLayerId(android.R.id.background);

// progress bar line *secondaryProgress* color
Drawable secondaryProgressDrawable = progressDrawable.findDrawableByLayerId(android.R.id.secondaryProgress);
processDrawable.setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);

// progress bar line all color
mSeekBar.getProgressDrawable().setColorFilter(Color.BLUE, PorterDuff.Mode.SRC_IN);

// progress circle color
mSeekBar.getThumb().setColorFilter(Color.GREEN, PorterDuff.Mode.SRC_IN);

4

Per le API <21 (e> = 21) puoi utilizzare la risposta di @Ahamadullah Saikat o https://www.lvguowei.me/post/customize-android-seekbar-color/ .

inserisci qui la descrizione dell'immagine

<SeekBar
    android:id="@+id/seekBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:maxHeight="3dp"
    android:minHeight="3dp"
    android:progress="50"
    android:progressDrawable="@drawable/seek_bar_ruler"
    android:thumb="@drawable/seek_bar_slider"
    />

drawable / seek_bar_ruler.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">
        <shape android:shape="rectangle">
            <solid
                android:color="#94A3B3" />
            <corners android:radius="2dp" />
        </shape>
    </item>
    <item android:id="@android:id/progress">
        <clip>
            <shape android:shape="rectangle">
                <solid
                    android:color="#18244D" />
                <corners android:radius="2dp" />
            </shape>
        </clip>
    </item>
</layer-list>

drawable / seek_bar_slider.xml:

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

    <solid android:color="#FFFFFF" />
    <stroke
        android:width="4dp"
        android:color="#18244D"
        />
    <size
        android:width="25dp"
        android:height="25dp"
        />
</shape>

3

Se stai usando SeekBar predefinito fornito da Android Sdk, il loro è un modo semplice per cambiarne il colore. basta andare su color.xml dentro /res/values/colors.xml e cambiare colorAccent.

<resources>
    <color name="colorPrimary">#212121</color>
    <color name="colorPrimaryDark">#1e1d1d</color>
     <!-- change below line -->
    <color name="colorAccent">#FF4081</color>
</resources>

2

Cambio il background_fill.xml

<?xml version="1.0" encoding="UTF-8"?>
  <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line" >
<size android:height="1dp" />
<gradient
    android:angle="0"
    android:centerColor="#616161"
    android:endColor="#616161"
    android:startColor="#616161" />
<corners android:radius="0dp" />
<stroke
    android:width="1dp"
    android:color="#616161" />
<stroke
    android:width="1dp"
    android:color="#616161" />
</shape>

e il progress_fill.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line" >
<size android:height="1dp" />
<gradient
    android:angle="0"
    android:centerColor="#fafafa"
    android:endColor="#fafafa"
    android:startColor="#fafafa" />
<corners android:radius="1dp" />
<stroke
    android:width="1dp"
    android:color="#cccccc" />
<stroke
    android:width="1dp"
    android:color="#cccccc" />
 </shape>

per rendere lo sfondo e l' 1dpaltezza di avanzamento .


2

Modo semplice per cambiare il colore della barra di ricerca ...

 <ProgressBar
            android:id="@+id/progress"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:theme="@style/Progress_color"/>

Stile: Progress_color

 <style name="Progress_color">
    <item name="colorAccent">@color/white</item> <!-- Whatever color you want-->
</style>

cambio di classe java ProgressDrawable ()

seek_bar.getProgressDrawable().setColorFilter(getResources().getColor(R.color.white), PorterDuff.Mode.MULTIPLY);

1

Se guardi le risorse Android, la barra di ricerca utilizza effettivamente le immagini.

Devi creare un disegno che sia trasparente in alto e in basso per dire 10px e la linea centrale 5px è visibile.

Fare riferimento all'immagine allegata. Devi convertirlo in un NinePatch.

inserisci qui la descrizione dell'immagine


puoi per favore suggerire alcuni post sullo stesso?
Suresh Cheemalamudi,

Uno dei buoni collegamenti che ho trovato - mokasocial.com/2011/02/…
Sagar Waghmare

Domenica la soluzione di G Akinsete funziona, non c'è bisogno di usare un NinePatch
Helin Wang,

0

Per coloro che utilizzano l'associazione dati:

  1. Aggiungi il seguente metodo statico a qualsiasi classe

    @BindingAdapter("app:thumbTintCompat")
    public static void setThumbTint(SeekBar seekBar, @ColorInt int color) {
        seekBar.getThumb().setColorFilter(color, PorterDuff.Mode.SRC_IN);
    }
  2. Aggiungi app:thumbTintCompatattributo al tuo SeekBar

    <SeekBar
           android:id="@+id/seek_bar"
           style="@style/Widget.AppCompat.SeekBar"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           app:thumbTintCompat="@{@android:color/white}"
    />

Questo è tutto. Ora puoi usarlo app:thumbTintCompatcon qualsiasi SeekBar. La tinta di avanzamento può essere configurata allo stesso modo.

Nota: questo metodo è anche compatibile con i dispositivi pre-lollipop.


0

Piccola correzione alla risposta di @ arnav-rao:

per assicurarti che il pollice sia colorato correttamente, usa:

<style name="MySeekBar" parent="Widget.AppCompat.SeekBar">
    <item name="android:progressBackgroundTint">@color/colorBgTint</item>
    <item name="android:progressTint">@color/colorProgressTint</item>
    <item name="android:thumbTint">@color/colorThumbTint</item>
</style>

qui android: thumbTint colora effettivamente il "pollice"


0

controlla questo tutorial molto bene

https://www.lvguowei.me/post/customize-android-seekbar-color/

semplice:

<SeekBar
                android:id="@+id/seekBar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:max="100"
                android:maxHeight="3dp"
                android:minHeight="3dp"
                android:progressDrawable="@drawable/seekbar_style"
                android:thumbTint="@color/positive_color"/>

quindi un file di stile:

<?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 android:shape="rectangle" >
            <solid
                android:color="@color/positive_color" />
        </shape>
    </item>
    <item android:id="@android:id/progress">
        <clip>
            <shape android:shape="rectangle" >
                <solid
                    android:color="@color/positive_color" />
            </shape>
        </clip>
    </item>
</layer-list>

0

Volevo creare uno stile per la seekbar e quindi aggiungere lo stile a un tema in modo da poterlo applicare a un intero tema pur consentendo a uno stile secondario di sovrascriverlo. Ecco cosa ho fatto:

<!-- Blue App Theme -->
    <style name="AppTheme.Blue" parent="BaseTheme.Blue">        
        <item name="android:seekBarStyle">@style/SeekbarStyle.Blue</item>
        <item name="seekBarStyle">@style/SeekbarStyle.Blue</item> <!--This is essential for some devices, e.g. Samsung-->
</style>

<!-- Slider Styles -->
<style name="SeekbarStyle.Blue" parent="Widget.AppCompat.SeekBar">
        <item name="android:progressBackgroundTint">@color/material_blue_a700_pct_30</item>
        <item name="android:thumbTint">@color/material_blue_a700</item>
        <item name="android:thumbTintMode">src_in</item>
        <item name="android:progressTint">@color/material_blue_a700</item>
</style>

<style name="SeekbarStyle.Green" parent="Widget.AppCompat.SeekBar">
        <item name="android:progressBackgroundTint">@color/material_green_a700_pct_30</item>
        <item name="android:thumbTint">@color/material_green_a700</item>
        <item name="android:thumbTintMode">src_in</item>
        <item name="android:progressTint">@color/material_green_a700</item>
</style>

Quanto sopra imposta lo stile Tema di ricerca su blu per tutti i dispositivi 21+, incluso Samsung (che necessita di seekBarStyle applicato oltre a Android: seekBarStyle; non so perché, ma ho visto di persona questo problema). Se desideri che tutte le barre di ricerca mantengano lo stile del tema e applichino lo stile della barra di ricerca verde solo ad alcuni widget, aggiungi quanto segue al widget che desideri:

<SeekBar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/AppTheme.Green"/>

0

Con la libreria dei componenti del materiale versione 1.2.0 è possibile utilizzare il nuovo Slidercomponente.

 <com.google.android.material.slider.Slider
       android:valueFrom="0"
       android:valueTo="300"
       android:value="200"
       android:theme="@style/slider_red"
       />

Puoi sovrascrivere il colore predefinito usando qualcosa come:

  <style name="slider_red">
    <item name="colorPrimary">#......</item>
  </style>

inserisci qui la descrizione dell'immagine

Altrimenti puoi usare questi attributi nel layout per definire un colore o un selettore di colori:

   <com.google.android.material.slider.Slider
       app:activeTrackColor="@color/...."
       app:inactiveTrackColor="@color/...."
       app:thumbColor="@color/...."
       />

oppure puoi usare uno stile personalizzato:

 <style name="customSlider" parent="Widget.MaterialComponents.Slider">
    <item name="activeTrackColor">@color/....</item>
    <item name="inactiveTrackColor">@color/....</item>
    <item name="thumbColor">@color/....</item>
  </style>

i documenti ufficiali affermano che è ancora pianificato. c'è qualche altra alternativa?
tejaspatel,

@tejaspatel Nella risposta c'è il link del componente ufficiale. La prima versione è ora rilasciata in 1.2.0-alpha01.
Gabriele Mariotti,

-1

Puoi anche farlo in questo modo:

<SeekBar
    android:id="@+id/redSeekBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:progressDrawable="@color/red"
    android:maxHeight="3dip"/>

Spero che possa aiutare!


1
Non penso che tu possa usare un colore dove sta cercando un disegno
Lancillotto
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.