ボタンの9Patch背景を動的に設定しようとした人はいますか? 重要な場合は、ボタンの幅と高さが設定されます wrap_content
はいの場合、「黒い線」の問題をどのように解決しましたか?
ありがとう
ボタンの9Patch背景を動的に設定しようとした人はいますか? 重要な場合は、ボタンの幅と高さが設定されます wrap_content
はいの場合、「黒い線」の問題をどのように解決しましたか?
ありがとう
9 パッチ画像に黒い点が表示されている場合は、画像を事前にコンパイルしていないことが原因です。
実行時に 9 パッチ画像を背景として設定するには、境界線が削除されて PNG チャンクにエンコードされるときに、事前にコンパイルする必要があります。
これを行うには、アプリケーションのフォルダーに .9.png 画像を挿入しres/drawable
、コンパイルして .apk を生成します (Eclipse では、.apk を右クリックしますproject root > Android Tools > Export Unsigned Application Package
)。次に、.apk を解凍すると、9 パッチのコンパイル済みデータを含む .9.png 画像が得られます。
コンパイル済みの 9 パッチ イメージを使用して、次のようにしてイメージを読み込みます。
private Drawable loadNinePatch(String path, Context context) {
Bitmap bitmap = BitmapFactory.decodeFile(path);
byte[] chunk = bitmap.getNinePatchChunk();
if(NinePatch.isNinePatchChunk(chunk)) {
return new NinePatchDrawable(context.getResources(), bitmap, chunk, new Rect(), null);
} else return new BitmapDrawable(bitmap);
}
次に、ボタンの背景として設定します。
button.setBackgroundDrawable(loadNinePatch("/data/data/your.app/files/button_background.9.png", context));