ho bisogno di aiuto con NinePatchDrawable:NinePatchDrawable non ottiene imbottitura dal pezzo
La mia app è possibile scaricare temi dalla rete. Quasi tutte le cose funzionano bene, tranne i PNG a 9 patch.
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() carica Bitmap dalla scheda SD. I PNG a 9 patch sono già compilati, il che significa che includono il blocco richiesto.
Il modo in cui converto la bitmap in un oggetto NinePatchDrawable sembra funzionare, perché l'immagine è estensibile così come l'ho disegnata.
L'unica cosa che non funziona è il padding. Ho già provato a impostare l'imbottitura alla vista in questo modo:
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) dovrebbe riempire il rect variabile con l'imbottitura ottenuto dal pezzo, non dovrebbe? Ma non è così.
Risultato: TextView (v) non mostra il testo nell'area del contenuto dell'immagine a 9 patch. I padding sono impostati su 0 in ciascuna coordinata.
Grazie per la lettura.
Segnala un problema su b.android.com, menziona anche il dispositivo utilizzato e la versione di Android. – Reno
Grazie. L'ho appena fatto. – DragonWork
Wow, grazie mille! Ha funzionato perfettamente – ABentSpoon