Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android seekbar set custom style using nine-patch images

I am trying to create a custom-styled seekbar. I have two nine-patch images one is a gray stretching bar search_progress.9.png (background color) and the other is a green stretching bar search_progress_bar.9.png (foreground color).

I use this xml as my seekbar's 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>

My problem is that, instead of the bar filling up to my thumb position, the entire bar is green all the time (search_progress_bar image). How can I get the same effect as Android's progress_horizontal.xml with my own images (I do not want to use shapes to draw my bar)?

like image 349
Eric Chen Avatar asked Aug 21 '11 22:08

Eric Chen


2 Answers

e_x_p's version works just fine but the even simpler version is

<?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>
like image 134
RaB Avatar answered Nov 01 '22 23:11

RaB


I solved this problem using a ClipDrawable. This is what worked for me:

Set @drawable/search_progress_drawable as the 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:

<?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>
like image 28
Eric Chen Avatar answered Nov 02 '22 00:11

Eric Chen