NinePatchDrawable не получает отступы из чанка

Мне нужна помощь с NinePatchDrawable:

Мое приложение может загружать темы из сети. Почти все работает нормально, кроме 9-Patch PNG.

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() загружает растровое изображение с SD-карты. 9-Patch PNG уже скомпилированы, это означает, что они включают требуемый фрагмент.

Способ, которым я конвертирую Bitmap в объект NinePatchDrawable, кажется, работает, потому что изображение можно растянуть так же, как я его нарисовал.

Единственное, что не работает, это отступы. Я уже пытался установить отступ для представления следующим образом:

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) должен заполнить переменную rect отступом, полученным из чанка, не так ли? Но это не так.

Результат: TextView (v) не показывает текст в области содержимого изображения 9-Patch. Отступы установлены на 0 в каждой координате.

Спасибо за внимание.

9
задан DragonWork 18 June 2012 в 21:59
поделиться