Панель поиска Android задает собственный стиль с использованием изображений с девятью патчами

Я пытаюсь создать панель поиска в пользовательском стиле. У меня есть два изображения с девятью патчами, одно из которых представляет собой серую полосу растяжения search_progress.9.png (цвет фона), а другое — зеленую полосу растяжения search_progress_bar.9.png (цвет переднего плана).

Я использую этот xml в качестве 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>

Моя проблема в том, что вместо того, чтобы полоса заполнялась до положения моего большого пальца, вся полоса все время зеленая (изображение search_progress_bar). Как я могу получить тот же эффект, что и в файле progress_horizontal.xml для Android, с моими собственными изображениями (я не хочу использовать фигуры для рисования полосы)?


person Eric Chen    schedule 21.08.2011    source источник


Ответы (2)


Версия e_x_p работает просто отлично, но еще более простая версия

<?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>
person RaB    schedule 19.06.2012
comment
Это также работает для меня, пока я использовал девять изображений патчей. Спасибо! - person Hasmukh; 19.12.2013

Я решил эту проблему, используя ClipDrawable. Вот что сработало для меня:

Установите @drawable/search_progress_drawable как 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>
person Eric Chen    schedule 26.08.2011