NinePatchDrawable não recebe preenchimento de bloco
Preciso de ajuda com o NinePatchDrawable:
Meu aplicativo pode baixar temas da rede. Quase todas as coisas funcionam bem, exceto os PNGs 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 () carrega o Bitmap do cartão SD. Os 9-Patch PNGs já estão compilados, o que significa que eles incluem o pedaço necessário.
A forma como eu converto o Bitmap em um objeto NinePatchDrawable parece estar funcionando, porque a imagem é extensível, assim como eu a desenhei.
A única coisa que não funciona é o preenchimento. Eu já tentei definir o preenchimento para a exibição assim:
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) deve preencher a variável rect com o preenchimento do pedaço, não deveria? Mas isso não acontece.
Resultado: O TextView (v) não mostra o texto na área de conteúdo da imagem do 9-Patch. Os preenchimentos são definidos como 0 em cada coordenada.
Obrigado pela leitura.