2011-08-21 23 views
9

Próbuję stworzyć niestandardowy styl seekbar. Mam dwa obrazy z dziewięcioma łatami, jeden to szary pasek rozciągający search_progress.9.png (kolor tła), a drugi to zielony pasek rozciągający search_progress_bar.9.png (kolor pierwszego planu).Android seekbar ustawia niestandardowy styl za pomocą dziewięciu łatek obrazów

Używam tego xml jako mojego SeekBar za progressDrawable:

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

Mój problem polega na tym, że zamiast paska wypełniającej do mojego położenia kciuka, cały pasek jest zielony przez cały czas (search_progress_bar obrazu). Jak mogę uzyskać taki sam efekt jak plik progress_horiz.xml systemu Android z moimi własnymi obrazami (nie chcę używać kształtów do rysowania mojego paska)?

Odpowiedz

11

Rozwiązałem ten problem za pomocą ClipDrawable. Oto, co zadziałało:

Zestaw @ drawable/search_progress_drawable jako 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: wersja

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

e_x_p za działa dobrze, ale jeszcze prostsza wersja jest

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

Nicea aby utrzymać to wszystko w jednym plik, dzięki! – Russ

+1

działa jak urok! :) – yahya

+0

To również działa dla mnie, gdy użyłem dziewięciu obrazów łatek. dzięki! – Hasmukh

Powiązane problemy