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.