Преоразмеряване на растерно изображение в списък със слоеве с възможност за рисуване

В момента разработвам приложение за Android. Искам да направя текст (заглавие) с фон, който изглежда така:

 _______
/______/

Имам следния код:

<?xml version="1.0" encoding="UTF-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>    
            <gradient
              android:startColor="@color/jaarkleur"
              android:centerColor="@color/jaarkleur"
              android:endColor="#E66C2C00"
              android:angle="0" />
            <stroke android:width="1dp"
            android:color="#ff000000"
            />       
        </shape>
    </item>
    <item>
        <bitmap android:src="@drawable/overlay_left" android:gravity="left"  />
    </item>
    <item>
        <bitmap android:src="@drawable/overlay_right" android:gravity="right"  />
    </item>

</layer-list>

Така че направих изображения с прозрачен триъгълник, който е поставен в двата края.

Това работи добре за заглавки само с един ред, но когато заглавката заема два реда, изглежда така:

http://i.imgur.com/lDQGo.png

Въпросът ми е: Възможно ли е да преоразмерите и двете изображения, така че да изглеждат правилно? Благодаря ти!


person user1255553    schedule 07.03.2012    source източник
comment
Мислили ли сте да използвате 9-patch?   -  person dmon    schedule 07.03.2012
comment
Да, но не искам да използвам 9-кръпка, искам да запазя „вътрешната“ цветова променлива.   -  person user1255553    schedule 08.03.2012


Отговори (2)


Реших го с помощта на две (полупрозрачни) изображения, които представляват ъглите.

XML изглежда така:

<?xml version="1.0" encoding="UTF-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
                <shape>    
                    <gradient
                      android:startColor="@color/jaarkleur"
                      android:centerColor="@color/jaarkleur"
                      android:endColor="#E66C2C00"
                      android:angle="0" />
                    <stroke android:width="1dp"
            android:color="#ff000000"
            />       
                </shape>
        </item>
        <item>
            <bitmap android:src="@drawable/overlay_left" android:gravity="left|top"  />
        </item>
        <item>
            <bitmap android:src="@drawable/overlay_right" android:gravity="right|bottom" />
        </item>        
</layer-list>
person user1255553    schedule 14.03.2012
comment
можете също да използвате android:gravity="right|fill_vertical" и android:gravity="left|fill_vertical", за да мащабирате вертикално вашите десни и леви растерни изображения - person grine4ka; 30.10.2012

Вместо да използвате списък със слоеве с градиент/контурен ход и персонализирано изображение, обмислете използването на NinePatchDrawable.

Има и удобен създател с 9 корекции, който идва с android SDK .

person John Leehey    schedule 07.03.2012
comment
Причината, поради която искам да използвам градиентен цвят, е, че променливата jaarkleur може да се променя. По-лесно е просто да модифицирате тази променлива, след това да направите изцяло ново фоново изображение. - person user1255553; 08.03.2012