Quería diseñar una barra de búsqueda que se parezca a la de la imagen a continuación.
Al usar la barra de búsqueda predeterminada obtendré algo como esto:
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:
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>
android
android-seekbar
custom-selectors
android-slider
suresh cheemalamudi
fuente
fuente
Respuestas:
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):Personalizado:
red_scrubber_progress.xml
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_focused_holo.png:
red_scrubber_control_normal_holo.png:
red_scrubber_control_pressed_holo.png:
red_scrubber_primary_holo.9.png:
red_scrubber_secondary_holo.9.png:
red_scrubber_track_holo_light.9.png:
Agregue SeekBar al diseño:
Resultado:
fuente
red_scrubber_control
dibujo 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 unResources$NotFoundException: File .../red_scrubber_control.xml from drawaable resource ID...
comentario.@dimen
para establecer el tamaño del pulgar en función de la pantalla?Mi respuesta está inspirada en la respuesta de Andras Balázs Lajtha que permite trabajar sin archivo xml
fuente
android:progressTint="@color/my_color" android:thumbTint="@color/another_color"
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.
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 .
fuente
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
fuente
colorControlActivated
es el parámetro correcto para el pulgar? Debería serthumbTint
.Simplemente reemplace los atributos de color con su color
background.xml
progress.xml
style.xml
thumb.xml
fuente
Google ha hecho esto más fácil en el SDK 21. Ahora tenemos atributos para especificar los colores de tinte del pulgar:
http://developer.android.com/reference/android/widget/AbsSeekBar.html#attr_android:thumbTint http://developer.android.com/reference/android/widget/AbsSeekBar.html#attr_android:thumbTintMode
fuente
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
ProgressBar
a esteAl diseñar el color de su barra de búsqueda, pruebe mediante programación el siguiente código
fuente
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:
fuente
salida:
en el archivo de diseño:
drawable / progress.xml
drawable / background_fill.xml
drawable / progress_fill.xml
drawable / custom_thumb.xml
colors.xml
fuente
Solo establece
Eso es todo
fuente
funciona igual que la respuesta seleccionada. no es necesario hacer ningún archivo dibujable o de lo contrario (solo en IN 5.0)
fuente
De forma predeterminada, Android coincidirá con el color de progreso de su control deslizante para
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:
fuente
fuente
Para las API <21 (y> = 21) puede usar la respuesta de @Ahamadullah Saikat o https://www.lvguowei.me/post/customize-android-seekbar-color/ .
drawable / seek_bar_ruler.xml:
drawable / seek_bar_slider.xml:
fuente
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.
fuente
Cambio el
background_fill.xml
y el
progress_fill.xml
para hacer el fondo y la
1dp
altura del progreso .fuente
Manera simple de cambiar el color de la barra de búsqueda ...
Estilo: Progress_color
cambio de clase de Java ProgressDrawable ()
fuente
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.
fuente
Para aquellos que usan enlace de datos:
Agregue el siguiente método estático a cualquier clase
Agregue
app:thumbTintCompat
atributo a su SeekBarEso es. Ahora puedes usar
app:thumbTintCompat
con cualquieraSeekBar
. El tinte de progreso se puede configurar de la misma manera.Nota: este método también es compatible con dispositivos pre-lollipop.
fuente
Pequeña corrección a la respuesta de @ arnav-rao:
Para asegurarse de que el pulgar esté coloreado correctamente, use:
aquí android: thumbTint en realidad colorea el "pulgar"
fuente
mira este tutorial muy bien
https://www.lvguowei.me/post/customize-android-seekbar-color/
sencillo :
luego un archivo de estilo:
fuente
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:
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:
fuente
Con la Biblioteca de componentes de material versión 1.2.0 puede usar el nuevo
Slider
componente.Puede anular el color predeterminado usando algo como:
De lo contrario, puede usar estos atributos en el diseño para definir un color o un selector de color:
o puedes usar un estilo personalizado:
fuente
También puedes hacerlo de esta manera:
¡Espero que ayude!
fuente