ich mit NinePatchDrawable Hilfe benötigen:NinePatchDrawable wird nicht Polsterung aus chunk
Meine App Themen aus dem Netz herunterladen. Fast alle Dinge funktionieren gut, 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 benötigten Chunk.
Die Art und Weise, wie ich die Bitmap in ein NinePatchDrawable-Objekt konvertiere, scheint zu funktionieren, weil das Bild sowohl dehnbar als auch gezeichnet ist.
Das einzige, was nicht funktioniert, ist die Polsterung. Ich habe bereits versucht, die Polsterung der Ansicht wie folgt festgelegt:
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 Polster aus dem Brocken bekam füllen, sollte es nicht? Aber das tut es nicht.
Ergebnis: TextView (v) zeigt den Text im Inhaltsbereich des 9-Patch-Bildes nicht an. Die Paddings werden in jeder Koordinate auf 0 gesetzt.
Danke fürs Lesen.
Stellen Sie ein Problem auf b.android.com, erwähnen Sie auch das verwendete Gerät und die Android-Version. – Reno
Danke. Ich habe es gerade getan. – DragonWork
Wow, vielen Dank! Arbeitete perfekt. – ABentSpoon