5

プログラムで 9 つのパッチ イメージを作成しようとしています。私はグリフィーのアプローチを試みましたが、うまくいかないようです。クラスの使用方法に関する情報はほとんどありません。ビットマップを間違ってインポートしていると思います。誰かがこれを機能させる方法を知っているか、より良い方法を知っているなら、私はあなたの助けに大いに感謝します.

私のコード:

// Dynamically create the 9patch image and apply it to a LinearLayout
LinearLayout llcode = (LinearLayout) findViewById(R.id.llcode);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.white_button);
Drawable np = NinePatchBitmapFactory.createNinePathWithCapInsets(getResources(), bitmap, 15, 15, 16, 16, null);

llcode.setBackgroundDrawable(np);

// The following code using the actual 9patch image: white_button_np.9.png
LinearLayout llxml = (LinearLayout) findViewById(R.id.llxml);
llxml.setBackgroundDrawable(getResources().getDrawable(R.drawable.white_button_np));

このスクリーンショットでは、上がプログラムによる方法、下が Android ツールを使用した典型的な 9patch の方法を示しています。

ここに画像の説明を入力

9patchに変換する前の元画像。

ここに画像の説明を入力

4

2 に答える 2

0

アルファチャンネルがあることを確認するために、デコーダーの設定を強制しようとしましたか?

inPreferredConfigARGB_8888に設定してみてください。

于 2013-01-22T12:00:03.547 に答える
0

解決策はこちら: https://stackoverflow.com/a/16676419/238845。API レベル 10 エミュレーターで正常にテストしました。

于 2014-01-20T13:14:59.313 に答える