Ich versuche, das folgende Xml mit Code zu kodieren.
----zeichnbar \my_layerdrawable.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap android:src="@drawable/my_image"
android:gravity="left"/>
</item>
<item android:left="10dp">
<bitmap android:src="@drawable/my_image"
android:gravity="left" />
</item>
<item android:top="10dp">
<bitmap android:src="@drawable/my_image"
android:gravity="left"/>
</item>
<item android:top="10dp" android:left="10dp">
<bitmap android:src="@drawable/my_image"
android:gravity="left" />
</item>
<item android:top="20dp">
<bitmap android:src="@drawable/my_image"
android:gravity="left"/>
</item>
<item android:top="20dp" android:left="10dp">
<bitmap android:src="@drawable/my_image"
android:gravity="left" />
</item>
</layer-list>
Ich habe den folgenden Block codiert, aber er streckt die Bilder.
InsetDrawable[] layers = new InsetDrawable[this.itemCount];
Resources resources = getResources();
ImageButton imgButton = (ImageButton) findViewById(R.id.btnItems);
int layerTop = 0;
for (int i = 0; i < this.itemCount; i++)
{
int layerLeft = i % 2 == 1 ? 5 : 0;
Drawable dr = resources.getDrawable(R.drawable.my_image);
layers[i] = new InsetDrawable(dr, layerLeft, layerTop, -layerLeft, -layerTop);
layerTop += i % 2 == 1 ? 10 : 0;
}
LayerDrawable layerDrawable = new LayerDrawable(layers);
imgButton.setImageDrawable(layerDrawable);
Wenn ich die Zeichenfläche xml dem imgButton
Sie funktioniert einwandfrei, ohne Dehnung oder sonstige Veränderungen.
ImageButton imgButton = (ImageButton) findViewById(R.id.btnItems);
imgButton.setImageResource(R.drawable.my_layerdrawable);
Haben Sie eine Idee, wie man die Ebene per Code zeichenbar machen kann?
Gracias.