2011-08-21 10 views
9

Estoy tratando de crear una barra de búsqueda de estilo personalizado. Tengo dos imágenes de nueve parches, una es una barra de extensión gris search_progress.9.png (color de fondo) y la otra es una barra de extensión verde search_progress_bar.9.png (color de primer plano).Android barra de búsqueda establecer estilo personalizado con imágenes de nueve parches

Yo uso este XML como progressDrawable de mi barra de búsqueda:

<?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/search_progress"></item> 
    <item android:id="@android:id/progress" android:drawable="@drawable/search_progress_bar"></item> 
</layer-list> 

Mi problema es que, en lugar de la barra de llenado hasta mi posición del pulgar, toda la barra de toda la (imagen search_progress_bar) el tiempo es de color verde. ¿Cómo puedo obtener el mismo efecto que progress_horizontal.xml de Android con mis propias imágenes (no quiero usar formas para dibujar mi barra)?

Respuesta

11

He resuelto este problema utilizando un ClipDrawable. Esto es lo que funcionó para mí:

Establezca @ drawable/search_progress_drawable como progressDrawable.

search_progress_drawable.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/search_progress"></item> 
    <item android:id="@android:id/progress" android:drawable="@drawable/search_progress_clip"></item> 
</layer-list> 

search_progress_clip.xml: Versión

<?xml version="1.0" encoding="utf-8"?> 
<clip xmlns:android="http://schemas.android.com/apk/res/android" 
    android:drawable="@drawable/search_progress_bar" 
    android:clipOrientation="horizontal" 
    android:gravity="left"> 
</clip> 
16

de e_x_p funciona muy bien, pero la versión aún más simple es

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

    <item android:id="@android:id/background"> 
     <nine-patch android:src="@drawable/progressbar_bg" android:dither="true"/> 
    </item> 
    <item android:id="@android:id/progress"> 
     <clip xmlns:android="http://schemas.android.com/apk/res/android" 
      android:clipOrientation="horizontal" 
      android:gravity="left"> 
      <nine-patch android:src="@drawable/progressbar_status" android:dither="true"/> 
     </clip> 
    </item> 

</layer-list> 
+0

agradable para mantenerlo todo en uno archivo, gracias! – Russ

+1

funciona como un encanto! :) – yahya

+0

También es útil para mí mientras usaba nueve imágenes de parche. ¡Gracias! – Hasmukh

Cuestiones relacionadas