NinePatchDrawable wird nicht vom Block aufgefüllt

Ich benötige Hilfe bei NinePatchDrawable:

Meine App kann Themen aus dem Netzwerk herunterladen. Fast alle Dinge funktionieren einwandfrei, außer 9-Patch-PNGs.

final Bitmap bubble = getFromTheme("bubble");
if (bubble == null) return null;

final byte[] chunk = bubble.getNinePatchChunk();
if (!NinePatch.isNinePatchChunk(chunk)) return null;

NinePatchDrawable d = new NinePatchDrawable(getResources(), bubble, chunk, new Rect(), null);
v.setBackgroundDrawable(d);

d = null;
System.gc();

getFromTheme () lädt die Bitmap von der SD-Karte. Die 9-Patch-PNGs sind bereits kompiliert, dh sie enthalten den erforderlichen Chunk.

Die Art und Weise, wie ich die Bitmap in ein NinePatchDrawable-Objekt konvertiere, scheint zu funktionieren, da das Bild dehnbar ist und ich es gezeichnet habe.

Das einzige, was nicht funktioniert, ist die Polsterung. Ich habe bereits versucht, die Polsterung auf die Ansicht wie folgt einzustellen:

final Rect rect = new Rect();   // or just use the new Rect() set
d.getPadding(rect);             // in the constructor
v.setPadding(rect.left, rect.top, rect.right, rect.bottom);

d.getPadding (rect) sollte die Variable rect mit dem aus dem Block erhaltenen Abstand füllen, nicht wahr? Aber das tut es nicht.

Ergebnis: In TextView (v) wird der Text im Inhaltsbereich des 9-Patch-Bildes nicht angezeigt. Die Auffüllungen werden in jeder Koordinate auf 0 gesetzt.

Danke fürs Lesen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage