Android: barra de búsqueda de estilo

229

Quería diseñar una barra de búsqueda que se parezca a la de la imagen a continuación.

ingrese la descripción de la imagen aquí

Al usar la barra de búsqueda predeterminada obtendré algo como esto:

ingrese la descripción de la imagen aquí

Entonces, lo que necesito es solo cambiar el color. No necesito estilos extra. ¿Hay algún enfoque directo para hacer esto o debería construir mi dibujo personalizado?

Intenté construir uno personalizado, pero no pude obtener el exacto como se muestra arriba. Después de usar un dibujo personalizado, lo que obtengo es como se muestra a continuación:

ingrese la descripción de la imagen aquí

Si necesito construir uno personalizado, sugiera cómo reducir el ancho de la línea de progreso y también la forma.

mi implementación 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>

barra de busqueda:

<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
fuente
40
Gracias por mostrar un ejemplo de cambio de estilo de barra de búsqueda en funcionamiento XD. (No hay muchos en internet).
Helin Wang

Respuestas:

297

Extraería drawables y xml del código fuente de Android y cambiaría su color a rojo. Aquí hay un ejemplo de cómo completé esto para mdpi drawables:

Personalizado red_scrubber_control.xml(agregar a resolución / dibujable):

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

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

Luego copie los dibujos necesarios del código fuente de Android, tomé de este enlace

Es bueno copiar estos dibujables para cada hdpi, mdpi, xhdpi. Por ejemplo, solo uso mdpi:

Luego, usando Photoshop, cambie el color de azul a rojo:

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

Agregue SeekBar al diseño:

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

ingrese la descripción de la imagen aquí

Andrés
fuente
Andrew, gracias por la gran respuesta. Tengo un problema con esto. Cuando uso el red_scrubber_controldibujo para el pulgar, me encuentro con un accidente. Si todos los elementos dibujables en el selector son iguales, funciona bien, pero si cambio uno de ellos, me sale un Resources$NotFoundException: File .../red_scrubber_control.xml from drawaable resource ID...comentario.
karl
2
Whoops Resulta que estaba relacionado con stackoverflow.com/questions/6669296/… . La nueva imagen que intentaba agregar era accidentalmente 37 MB en lugar de 2 KB ...
karl
¿Hay alguna forma de usar @dimenpara establecer el tamaño del pulgar en función de la pantalla?
Si8
1
@ SiKni8 Puede definir diferentes dimensiones para diferentes tamaños de pantalla en función de los parámetros normales, grandes, xlarge, sw o w para la carpeta de valores. Luego, simplemente use esta dimensión en su diseño, estilo o tema. Revise este enlace
Andrew
1
Gracias por el enlace al Android Holo Colors Generator. Eso es muy útil
Árboles
66

Mi respuesta está inspirada en la respuesta de Andras Balázs Lajtha que permite trabajar sin archivo xml

seekBar.getProgressDrawable().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
seekBar.getThumb().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
Fred Dupont
fuente
El color del diálogo de progreso cambió pero el color de los pulgares no ... ¿por qué?
Yonatan Nir
77
Si no necesita hacer esto en código y no desea crear listas de capas y dibujos, etc., también puede hacerlo en el xml de la barra de búsqueda android:progressTint="@color/my_color" android:thumbTint="@color/another_color"
Daveloper87
59

Si desea exactamente la misma barra pero en rojo, puede agregar un filtro de color PorterDuff mediante programación. Puede obtener cada dibujo que desee colorear a través de los métodos de la clase base ProgressBar . Luego configure un filtro de color para ello.

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

Si el ajuste de color deseado no se puede realizar a través de un filtro Porter Duff, puede especificar su propio filtro de color .

Andras Balázs Lajtha
fuente
3
no estoy seguro de qué SDK, proly 21, pero si desea que el mismo icono tenga un color diferente, simplemente agregue el color "colorAccent" en colors.xml y lo usará
tibbi
57

Estilo de material personalizado de barra de búsqueda de Android, para otras personalizaciones de barra de búsqueda 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>

barra de búsqueda estilo de material personalizado

Arnav Rao
fuente
2
Gran solución para Android> 21
saltandpepper
44
¿Estás seguro de que colorControlActivatedes el parámetro correcto para el pulgar? Debería ser thumbTint.
Peter Knut
¿Cuál es la solución para debajo de API 21?
Faisal Shaikh
42

Simplemente reemplace los atributos de color con su color

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
fuente
1
¿Cómo uso los archivos en una barra de búsqueda?
mungaih pk
@RahulRastogi ¿cómo usaste estos archivos? Un poco tonto que esta respuesta sea tan popular con 0 explicaciones de cómo funciona ...
Selali Adobor
1
@ AssortedTrailmix Lo hice hace mucho tiempo. Intente configurar atributos como: android: thumb = "@ drawable / thumb" y en la propiedad android: progressDrawable establezca el archivo dibujable de la lista de capas mencionada anteriormente. Puedes probar: mindfiremobile.wordpress.com/2014/05/20/…
Rahul Rastogi
37

Google ha hecho esto más fácil en el SDK 21. Ahora tenemos atributos para especificar los colores de tinte del pulgar:

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
fuente
77
progresoTinte, también.
afollestad
1
Las listas de tonos se aplican a todos los elementos de la interfaz de usuario de Android a partir de API 21, así es como se aplica colorAccent.
afollestad
16

Todas esas respuestas están en desuso.

En 2019 es más fácil de peinar su barra de búsqueda a su color preferido cambiando ProgressBara este

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

Al diseñar el color de su barra de búsqueda, pruebe mediante programación el siguiente código

        seekBar.getProgressDrawable().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
        seekBar.getThumb().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
Giannis Mpountouridis
fuente
¿Por qué en desuso?
CoolMind
porque las bibliotecas han cambiado
Giannis Mpountouridis
Puede ver la respuesta de @Ahamadullah Saikat ( stackoverflow.com/a/50074961/2914140 ) o lvguowei.me/post/customize-android-seekbar-color . No usan bibliotecas y establecen colores SeekBar incluso para API antiguas.
CoolMind
11

Como mencioné uno arriba (@andrew), crear SeekBar personalizado es muy fácil con este sitio: http://android-holo-colors.com/

Simplemente habilite SeekBar allí, elija el color y reciba todos los recursos y cópielos al proyecto. Luego aplíquelos en xml, por ejemplo:

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

salida:

ingrese la descripción de la imagen aquí

en el archivo de diseño:

        <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
fuente
1
no sabía que AppCompat Seekbar existía
Pierre
10

Solo establece

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

Eso es todo

Domingo G Akinsete
fuente
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 igual que la respuesta seleccionada. no es necesario hacer ningún archivo dibujable o de lo contrario (solo en IN 5.0)

Haroon Ahmed
fuente
5

De forma predeterminada, Android coincidirá con el color de progreso de su control deslizante para

`<item name="colorAccent">`

valor en su styles.xml . Luego, para configurar una imagen de pulgar deslizante personalizada, solo use este código en el bloque de diseño de SeekBar xml:

android:thumb="@drawable/slider"
IgorGanapolsky
fuente
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
fuente
4

Para las API <21 (y> = 21) puede usar la respuesta de @Ahamadullah Saikat o https://www.lvguowei.me/post/customize-android-seekbar-color/ .

ingrese la descripción de la imagen aquí

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

Si está utilizando SeekBar predeterminado proporcionado por Android Sdk, entonces es una forma sencilla de cambiar el color de eso. simplemente vaya a color.xml dentro de /res/values/colors.xml y cambie el colorAccent.

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

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

y el 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 hacer el fondo y la 1dpaltura del progreso .

vrunoa
fuente
2

Manera simple de cambiar el color de la barra de búsqueda ...

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

cambio de clase de Java ProgressDrawable ()

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

Si nos fijamos en los recursos de Android, la barra de búsqueda en realidad usa imágenes.

Tienes que hacer un dibujable que sea transparente en la parte superior e inferior para decir 10px y la línea central de 5px es visible.

Consulte la imagen adjunta. Necesita convertirlo en un NinePatch.

ingrese la descripción de la imagen aquí

Sagar Waghmare
fuente
¿Puedes por favor sugiere algunas publicaciones sobre el mismo?
suresh cheemalamudi
Uno de los buenos enlaces que encontré - mokasocial.com/2011/02/…
Sagar Waghmare
La solución del domingo G Akinsete funciona, no es necesario usar un NinePatch
Helin Wang
0

Para aquellos que usan enlace de datos:

  1. Agregue el siguiente método estático a cualquier clase

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

Eso es. Ahora puedes usar app:thumbTintCompatcon cualquiera SeekBar. El tinte de progreso se puede configurar de la misma manera.

Nota: este método también es compatible con dispositivos pre-lollipop.

Stan Mots
fuente
0

Pequeña corrección a la respuesta de @ arnav-rao:

Para asegurarse de que el pulgar esté coloreado correctamente, 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>

aquí android: thumbTint en realidad colorea el "pulgar"

levus.lazarus
fuente
0

mira este tutorial muy bien

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

sencillo :

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

luego un archivo 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
fuente
0

Quería crear un estilo para la barra de búsqueda y luego agregar el estilo a un tema para poder aplicarlo a un tema completo y al mismo tiempo permitir que un subestilo lo anule. Aquí esta lo que hice:

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

Lo anterior establece el estilo de la barra de búsqueda del tema en azul para todos los dispositivos 21+, incluido Samsung (que necesitan el seekBarStyle aplicado además de android: seekBarStyle; no estoy seguro de por qué, pero vi este problema de primera mano). Si desea que todas las barras de búsqueda mantengan el estilo del tema y solo apliquen el estilo de la barra de búsqueda verde a algunos widgets, agregue lo siguiente al widget que desee:

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

Con la Biblioteca de componentes de material versión 1.2.0 puede usar el nuevo Slidercomponente.

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

Puede anular el color predeterminado usando algo como:

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

ingrese la descripción de la imagen aquí

De lo contrario, puede usar estos atributos en el diseño para definir un color o un selector de color:

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

o puedes usar un 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
fuente
Los documentos oficiales afirman que todavía está planeado. ¿Hay otra alternativa?
tejaspatel
@tejaspatel En la respuesta está el enlace del componente oficial. La primera versión ahora se lanza en 1.2.0-alpha01.
Gabriele Mariotti el
-1

También puedes hacerlo de esta manera:

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

¡Espero que ayude!

Omar Aflak
fuente
1
No creo que pueda usar un color donde está buscando un dibujable
Lancelot