Конструктор NinePatchDrawable игнорирует заполнение? - PullRequest
3 голосов
/ 14 октября 2011

Я пытаюсь создать NinePatchDrawable во время выполнения из скомпилированного файла PNG с девятью исправлениями, расположенного в папке ресурсов.Проблема в том, что конструктор, кажется, игнорирует заполнение в блоке из девяти патчей.

InputStream inStream = context.getAssets().open(imagePath);
Bitmap bitmap = BitmapFactory.decodeStream(inStream);
byte[] chunk = bitmap.getNinePatchChunk();
boolean isNinePatch = NinePatch.isNinePatchChunk(chunk);
Rect padding = new Rect();
if(isNinePatch)
    drawable = new NinePatchDrawable(context.getResources(), bitmap, chunk, padding, imagePath);

Этот код возвращает NinePatchDrawable с нулевым заполнением со всех сторон.Я уверен, что файл PNG содержит правильные поля заполнения, потому что следующий код возвращает NinePatchDrawable с правильным заполнением, используя точно такой же скомпилированный файл PNG из девяти патчей:

InputStream inStream = context.getAssets().open(imagePath);
Drawable drawable = Drawable.createFromResourceStream(context, null, inStream, null);

(Почему бы мне просто не использовать этот метод вместо этого? Потому что он падает на некоторых телефонах .)

Если кто-то может показать мне, как создать NinePatchDrawable во время выполнения с помощьюправильное заполнение Я бы очень признателен!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...