2 Stimmen

Wie konvertiert man eine xml-Ebenenliste in eine zeichenbare Ebene durch Code

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X