Изменить растровое изображение в DrawerListDrawable - PullRequest
5 голосов
/ 23 декабря 2011

Вот упрощенная версия моего LayerList. Он имеет растровое изображение в элементе, чтобы предотвратить масштабирование. Я хочу изменить рисование этого растрового изображения программно. Есть ли способ сделать это?

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

    <item 
        android:id="@+id/item" 
        android:left="165dp" 
        android:top="245dp" >
        <bitmap
            android:id="@+id/bitmap" 
            android:src="@drawable/tag_de_01"
            android:gravity="top|left" />
    </item>

</layer-list>

Я безуспешно пробовал следующее:

Resources res = getResources();
LayerDrawable layerDrawable = (LayerDrawable) res.getDrawable(R.drawable.layer_list_drawable);

Drawable newDrawable = (Drawable)res.getDrawable(R.drawable.something);

// works, but scales the image because the drawable of the item is set instead the one of the bitmap
layerDrawable.setDrawableByLayerId(R.id.item, newDrawable);

// doesn't work at all
layerDrawable.setDrawableByLayerId(R.id.bitmap, newDrawable);

1 Ответ

0 голосов
/ 06 мая 2012

Приведите newDrawable к BitmapDrawable (конечно, при условии, что оно одно), и вы можете использовать BitmapDrawable.setGravity так же, как вы используете атрибут android: gravity в xml для предотвращения масштабирования

...