Android - barra de busca de estilo

229

Eu queria criar uma barra de busca parecida com a da imagem abaixo.

insira a descrição da imagem aqui

Ao usar a barra de pesquisa padrão, vou obter algo assim:

insira a descrição da imagem aqui

Então, o que eu preciso é mudar apenas a cor. Não preciso de estilos extras. Existe alguma abordagem direta para fazer isso ou devo criar meu drawable personalizado.?

Tentei criar um personalizado, mas não consegui o exato, como mostrado acima. Depois de usar o drawable personalizado, o que recebo é como mostrado abaixo:

insira a descrição da imagem aqui

Se eu precisar criar o personalizado, sugira como reduzir a largura da linha de progresso e também a forma.

minha implementação personalizada:

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>
suresh cheemalamudi
fonte
40
Obrigado por mostrar um exemplo de alteração de estilo de barra de busca em funcionamento XD. (não há muitos na internet).
Helin Wang

Respostas:

297

Gostaria de extrair drawables e xml do código-fonte do Android e mudar sua cor para vermelho. Aqui está um exemplo de como eu completei isso para mdpi drawables:

Personalizado red_scrubber_control.xml(adicionar a res / drawable):

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

Personalizadas: 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>

Em seguida, copie os drawables necessários do código-fonte do Android, tirei deste link

É bom copiar esses desenhos para cada hdpi, mdpi, xhdpi. Por exemplo, eu uso apenas mdpi:

Em seguida, usando o Photoshop, altere a cor de azul para vermelho:

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

Adicione o SeekBar ao 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" />

Resultado:

insira a descrição da imagem aqui

andrew
fonte
Andrew, obrigado pela ótima resposta. Estou tendo um problema com isso. Ao usar o red_scrubber_controldrawable para o polegar, encontro um acidente. Se todos os drawables no seletor forem iguais, funcionará bem, mas se eu mudar um deles, recebo uma Resources$NotFoundException: File .../red_scrubber_control.xml from drawaable resource ID...mensagem.
27613 karl
2
Ops. Acontece que estava relacionado a stackoverflow.com/questions/6669296/… . A nova imagem que eu estava tentando adicionar foi acidentalmente 37MB em vez de 2 KB ...
karl
Existe alguma maneira de usar @dimenpara definir o tamanho do polegar com base na tela?
Si8
1
@ SiKni8 É possível definir uma dimensão diferente para diferentes tamanhos de tela, com base nos parâmetros normal, grande, xlarge, sw ou w da pasta de valores. Em seguida, basta usar essa dimensão em seu layout, estilo ou tema. Verifique este link
andrew
1
Obrigado pelo link para o Android Holo Colors Generator. Isso é muito útil.
Trees
66

Minha resposta é inspirada em Andras Balázs Lajtha, que permite trabalhar sem arquivo xml

seekBar.getProgressDrawable().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
seekBar.getThumb().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
Fred Du Pont
fonte
A cor da caixa de diálogo de progresso mudou, mas a cor dos polegares não. Por quê?
Yonatan Nir
7
Se você não precisa fazer isso no código e não quero criar listas de camadas e drawables etc você também pode fazer isso no xml do seekbar android:progressTint="@color/my_color" android:thumbTint="@color/another_color"
Daveloper87
59

Se você quiser exatamente a mesma barra, mas em vermelho, poderá adicionar um filtro de cores PorterDuff programaticamente. Você pode obter cada desenho que deseja colorir através dos métodos da classe base ProgressBar . Em seguida, defina um filtro de cores para ele.

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

Se o ajuste de cores desejado não puder ser feito através de um filtro Porter Duff, você poderá especificar seu próprio filtro de cores .

Andras Balázs Lajtha
fonte
3
não tenho certeza desde que SDK, proly 21, mas se você quiser mesmo ícone apenas cor diferente, basta adicionar a cor "colorAccent" em colors.xml e vai usá-lo
TIBBI
57

Estilo de material personalizado da barra de busca do Android, para outras personalizações da barra de busca 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>

estilo de material personalizado seekbar

Arnav Rao
fonte
2
Ótima solução para Android> 21
saltandpepper
4
Tem certeza de que esse colorControlActivatedé o parâmetro certo para o polegar? Deveria ser thumbTint.
Peter Knut
Qual é a solução para a API 21 abaixo?
Faisal Shaikh
42

Apenas substitua os atributos de cor pela sua cor

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>
ionutgyn
fonte
1
Como uso os arquivos em uma barra de pesquisa?
Mungaih pk
@RahulRastogi como você usou esses arquivos? Tipo de bobagem que esta resposta é tão popular entre os 0 explicação de como ele funciona ...
Selali Adobor
1
@AssortedTrailmix Fiz isso há muito tempo. Tente definir atributos como: android: thumb = "@ drawable / thumb" e na propriedade android: progressDrawable defina o arquivo drawable da lista de camadas acima mencionado. Você pode tentar: mindfiremobile.wordpress.com/2014/05/20/…
Rahul Rastogi
37

O Google facilitou isso no SDK 21. Agora, temos atributos para especificar as cores de tonalidade do polegar:

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

k2col
fonte
7
progressTint também.
afollestad
1
As listas de cores se aplicam a todos os elementos de interface do usuário no Android a partir da API 21, é assim que o colorAccent é aplicado.
afollestad
16

Todas essas respostas estão obsoletas.

Em 2019, é mais fácil estilizar sua barra de busca com a cor preferida, alterando-a ProgressBarpara esta

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

Como estilizar sua cor da barra de pesquisa, programaticamente, tente o seguinte código

        seekBar.getProgressDrawable().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
        seekBar.getThumb().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
Giannis Mpountouridis
fonte
Por que reprovado?
CoolMind
porque as bibliotecas mudaram
Giannis Mpountouridis 23/05/19
Você pode ver a resposta de @Ahamadullah Saikat ( stackoverflow.com/a/50074961/2914140 ) ou lvguowei.me/post/customize-android-seekbar-color . Eles não usam bibliotecas e definem as cores do SeekBar mesmo para APIs antigas.
CoolMind 23/05/19
11

Como mencionado acima (@andrew), a criação de SeekBar personalizado é super fácil com este site - http://android-holo-colors.com/

Basta ativar o SeekBar lá, escolher a cor, receber todos os recursos e copiar para o projeto. Em seguida, aplique-os no xml, por exemplo:

  android:thumb="@drawable/apptheme_scrubber_control_selector_holo_light"
  android:progressDrawable="@drawable/apptheme_scrubber_progress_horizontal_holo_light"
Anton Kizema
fonte
10

resultado:

insira a descrição da imagem aqui

no arquivo de 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>
Ahamadullah Saikat
fonte
1
não sabia que o AppCompat Seekbar existia
Pierre
10

Basta definir

android:maxHeight="3dp"
android:minHeight="3dp"

Isso é tudo

Sunday G Akinsete
fonte
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" />

funciona da mesma forma que a resposta selecionada. não é necessário criar nenhum arquivo extraível. (apenas no IN 5.0)

Haroon Ahmed
fonte
5

Por padrão, o Android corresponderá à cor do progresso do seu controle deslizante para

`<item name="colorAccent">`

valor em seu styles.xml . Em seguida, para definir uma imagem miniatura personalizada do controle deslizante, use este código no bloco do layout XML do SeekBar :

android:thumb="@drawable/slider"
IgorGanapolsky
fonte
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);
Hugo
fonte
4

Para APIs <21 (e> = 21), você pode usar a resposta de @Ahamadullah Saikat ou https://www.lvguowei.me/post/customize-android-seekbar-color/ .

insira a descrição da imagem aqui

<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>
CoolMind
fonte
3

Se você estiver usando o SeekBar padrão fornecido pelo Android Sdk, então é uma maneira simples de mudar a cor disso. basta ir para color.xml em /res/values/colors.xml e alterar o colorAccent.

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

Eu mudo o 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 a 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>

para fazer a 1dpaltura de fundo e progresso .

vrunoa
fonte
2

Maneira simples de mudar a cor da barra de busca ...

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

Estilo: Progress_color

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

mudança de classe java ProgressDrawable ()

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

Se você olhar para os recursos do Android, a barra de busca realmente usa imagens.

Você precisa criar um desenho que seja transparente na parte superior e inferior, por exemplo, 10px e a linha central de 5px seja visível.

Consulte a imagem em anexo. Você precisa convertê-lo em um NinePatch.

insira a descrição da imagem aqui

Sagar Waghmare
fonte
você pode sugerir algumas postagens sobre o mesmo?
Suresh cheemalamudi
Um dos bons links que encontrei - mokasocial.com/2011/02/…
Sagar Waghmare:
Solução de domingo G Akinsete funciona, não há necessidade de usar um NinePatch
Helin Wang
0

Para quem usa vinculação de dados:

  1. Adicione o seguinte método estático a qualquer classe

    @BindingAdapter("app:thumbTintCompat")
    public static void setThumbTint(SeekBar seekBar, @ColorInt int color) {
        seekBar.getThumb().setColorFilter(color, PorterDuff.Mode.SRC_IN);
    }
  2. Adicionar app:thumbTintCompatatributo ao seu 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}"
    />

É isso aí. Agora você pode usar app:thumbTintCompatcom qualquer SeekBar. O tom de progresso pode ser configurado da mesma maneira.

Nota: este método também é compatível com dispositivos pré-pirulito.

Stan Mots
fonte
0

Pequena correção para a resposta de @ arnav-rao:

para garantir que o polegar esteja colorido corretamente, use:

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

aqui android: thumbTint realmente cores o "polegar"

levus.lazarus
fonte
0

verifique este tutorial muito bom

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

simples:

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

então um arquivo de estilo:

<?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>
Joolah
fonte
0

Eu queria criar um estilo para a barra de busca e, em seguida, adicionar o estilo a um tema para que ele pudesse ser aplicado a um tema inteiro, enquanto permitia que um subestilo o substituísse. Aqui está o que eu fiz:

<!-- 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>

A descrição acima define o estilo da barra de busca do tema como azul para todos os dispositivos com mais de 21 anos, incluindo Samsung (que precisam do seekBarStyle aplicado além do android: seekBarStyle; não sei por que, mas vi esse problema em primeira mão). Se você deseja que todas as barras de busca mantenham o estilo do tema e aplique apenas o estilo verde da barra de busca a alguns widgets, adicione o seguinte ao widget desejado:

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

Com a Biblioteca de componentes de materiais versão 1.2.0, você pode usar o novo Slidercomponente.

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

Você pode substituir a cor padrão usando algo como:

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

insira a descrição da imagem aqui

Caso contrário, você pode usar estes atributos no layout para definir uma cor ou um seletor de cores:

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

ou você pode usar um estilo personalizado:

 <style name="customSlider" parent="Widget.MaterialComponents.Slider">
    <item name="activeTrackColor">@color/....</item>
    <item name="inactiveTrackColor">@color/....</item>
    <item name="thumbColor">@color/....</item>
  </style>
Gabriele Mariotti
fonte
documentos oficiais afirmam que ainda está planejado. Existe alguma outra alternativa?
tejaspatel
@tejaspatel Na resposta, há o link do componente oficial. A primeira versão foi lançada no 1.2.0-alpha01.
Gabriele Mariotti
-1

Você também pode fazer desta maneira:

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

Espero que ajude!

Omar Aflak
fonte
1
Eu não acho que você pode usar uma cor onde ele está à procura de um drawable
Lancelot