いくつかの新しいことを学ぼうとしていて、これを理解できない場合は、助けていただければ幸いです。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" />
質問:レイヤーリスト内のドローアブルの1つをプログラムで参照して、別のドローアブルに変更するにはどうすればよいですか?
ありがとう。
myImage
これで、変数を正しく交換したい新しいドローアブルができましたか?では、どうすればそれをレイヤーリストに入れることができますか?私はとを使用すると思いますfindDrawableByLayerId
がsetDrawableByLayerId
、どのくらい正確ですか?または私はそれを完全に間違っている可能性があります!ヘルプ!
私は何をしようとしていますか?表示されるドローアブルを変更します。たとえば、「android_purple」という別のドローアブルがあるとすると、上記のレイヤーリストの例の「android_green」ドローアブルに切り替えるにはどうすればよいでしょうか。
編集:
私の限られた知識で、これまでの私のコードは次のとおりです(これは機能せずsetDrawableByLayerId
、未定義のエラーが発生します):
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.