2010-03-17 19 views
8

¿Hay alguna forma de eliminar la imagen de la barra de fondo en el widget de SeekBar para Android?Android Eliminar SeekBar Antecedentes

Solo quiero que muestre un control deslizante sin una barra de progreso detrás.

Remove this

Cualquier ayuda?

Respuesta

4

Bueno, he resuelto mi problema.

para eliminar el fondo, hay que crear un estirable blanco y ponerlo a la progressDrawable:

satBar.setProgressDrawable(invisibleBackground); 

Si se establece en cero, no parece funcionar.

3
+0

Tengo. El fondo dibujable está en realidad detrás de la barra. Necesito una manera de eliminar la barra (y también cambiar la imagen del control deslizante) – GuyNoir

+0

y cómo puedo restaurar la inicial después de eso? tks – Paul

+1

@Paul: primero intenta llamar a 'getBackground()', guardando el resultado en algún lugar, y luego restaurándolo a través de 'setBackgroundDrawable()'. A pesar de los nombres no paralelos, 'getBackground()' devuelve un 'Drawable'. – CommonsWare

2

Una forma de hacerlo sería cambiar el color de la barra de progreso por el color de fondo. Tienes que usar un diseño personalizado.

<SeekBar 
    android:layout_width="350px" 
    android:layout_height="25px" 
    android:layout_margin="30px" 
    android:layout_x="60px" 
    android:layout_y="185px" 
    android:id="@+id/seekbar" 
    android:progressDrawable="@drawable/myprogress" 
/> 

un diseño personalizado es la siguiente - jugar con los colores:

<?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> 
    <corners android:radius="5dip" /> 
    <gradient 
      android:startColor="#ff9d9e9d" 
      android:centerColor="#ff5a5d5a" 
      android:centerY="0.75" 
      android:endColor="#ff747674" 
      android:angle="270" 
    /> 
</shape> 
</item> 


<item 
android:id="@android:id/progress" 
> 
<clip> 
    <shape> 
     <corners 
      android:radius="5dip" /> 
     <gradient 
      android:startColor="#9191FE" 
      android:centerColor="#9191FE" 
      android:centerY="0.75" 
      android:endColor="#9191FE" 
      android:angle="270" /> 
    </shape> 
</clip> 
</item> 

27

Existe una manera más sencilla que no requiere la creación de un nuevo estirable. Basta con establecer

android:progressDrawable="@android:color/transparent" 

O si lo desea hacerlo en el código siguiente en su definición xml:

mySlider.setProgressDrawable(new ColorDrawable(android.R.color.transparent)); 
+0

Mejor solución que la solución de @GuyNoir anterior, que requiere la creación de un "dibujable invisible" artificial – Guy

+0

Solo una nota: no puede usar # 0000, pero si usa @android: color/transparente funciona. – sidon

+0

Pero esto elimina la línea horizontal también en el tema holo light. Me gustaría mantener eso. – lalitm

0

crear un archivo XML seekbar_progress.xml y colocarlo en drawable rayas folder.Here es una imagen, tome una imagen y colóquela en la carpeta drawable.

seekbar_progress.xml

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

    <item> 
    <clip> 
    <bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
     android:src="@drawable/stripes" 
     android:tileMode="repeat" 
     android:antialias="true" 
     android:dither="true" 
     android:filter="false" 
     android:gravity="left" 
    /> 
    </clip> 
</item> 
</layer-list> 

Ahora en su archivo main xml que está teniendo código de barra de búsqueda, tomar una imagen y guardar en drawable folder.here seekbar es una imagen.

<SeekBar 
      android:id="@+id/seekbar" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="@drawable/seekbar" 
      android:progressDrawable="@drawable/seekbar_progress"/> 
Cuestiones relacionadas