Я пытаюсь создать 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 во время выполнения с помощьюправильное заполнение Я бы очень признателен!