3

アセットフォルダーにあるコンパイル済みの 9 パッチ PNG ファイルから実行時にNinePatchDrawableを構築しようとしています。問題は、コンストラクターが 9 パッチ チャンクのパディングを無視しているように見えることです。

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を返します。次のコードは、まったく同じコンパイル済みの 9 パッチ PNG ファイルを使用して、正しいパディングでNinePatchDrawableを返すため、PNG ファイルには正しいパディング マージンが含まれていると確信しています。

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

(代わりにこの方法を使用しないのはなぜですか?一部の携帯電話でクラッシュするためです。)

実行時に正しいパディングを使用して NinePatchDrawable を構築する方法を誰かが教えてくれれば、本当に感謝しています!

4

0 に答える 0