Пытаясь узнать что-то новое и не может понять это, любая помощь приветствуется. Учитывая этот простой код, который прямо из документации Google:
layers.xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/first_image">
<bitmap android:src="@drawable/android_red"
android:gravity="center" />
</item>
<item android:id="@+id/second_image" android:top="10dp" android:left="10dp">
<bitmap android:src="@drawable/android_green"
android:gravity="center" />
</item>
<item android:id="@+id/third_image" android:top="20dp" android:left="20dp">
<bitmap android:src="@drawable/android_blue"
android:gravity="center" />
</item>
</layer-list>
И main.xml:
<ImageView
android:id="@+myImageView"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/layers" />
Вопрос: Как программно ссылаться на один из чертежей в списке слоев, чтобы я мог изменить его на другой способ?
Спасибо.
Итак, теперь у меня есть мой новый drawable, который я хочу поменять в переменной myImage
правильно? Теперь, как я могу получить это в списке слоев? Я предполагаю, что использую findDrawableByLayerId
и setDrawableByLayerId
, но как именно? Или я могу сделать это совершенно неправильно! Помогите!
Что я пытаюсь сделать? Измените отображаемый. Например, предположим, что у меня есть еще один drawable, называемый "android_purple", как бы включить его для "android_green", который можно извлечь в приведенном выше примере списка слоев?
EDIT:
С моими ограниченными знаниями вот мой код до сих пор (который не работает, я получаю ошибку, что setDrawableByLayerId
есть undefined):
Resources res = getApplicationContext().getResources();
BitmapDrawable newImage = (BitmapDrawable) res.getDrawable(R.drawable.android_purple); //Get replacement image, can't use LayerDrawable or get error.
boolean layer_drawable_changed = (setDrawableByLayerId((R.id.second_image), newImage)); //Set new drawable? Error on this line.