BitmapDrawable を作成し、後で次のような関数でいくつかのオブジェクトに割り当てます (これとまったく同じではありませんが、テスト目的で削除されています)。
Drawable CreateBitmap(int col)
{ Bitmap b = Bitmap.createBitmap(50, 50, Config.ARGB_8888);
Canvas c = new Canvas(b);
c.drawColor(col);
return new BitmapDrawable(b);
}
そして、これは機能し、メモリに保持するサイズ 50 x 50 の BitmapDrawable を作成します。次に、この BitmapDrawable をさまざまなボタン、チェックボックスなど、特定の色が必要なものに割り当てます。
私が抱えている問題は、BitmapDrawables がどういうわけか切り捨てられていることです。高さ 80 のボタンに割り当ててから高さ 160 のボタンに割り当てると、最初のボタンはきれいに塗りつぶされ、後者は半分だけ塗りつぶされているように見えます。BitmapDrawable は最初の使用に設定され、その後のすべての割り当てはそれによって制限されているようです。すぐに発生することもあれば、別のタブに切り替えて前のタブに戻ったときにのみ発生することもあります。
BitmapDrawable はメモリ内に 50x50 のままであり、割り当てられたオブジェクトは適切なサイズの独自のバージョンを取得する (またはレンダリング時にサイズ変更されたコピーを作成する) と思いましたが、BitmapDrawable 自体が何らかの形で変更されるわけではありません。認めますが、これらすべてがどのように詳細に機能するかはわかりません。私が間違っていること、およびそれらを割り当てるオブジェクトごとに個別の BitmapDrawables を作成する必要があるかどうか、または何か他のことができるかどうかについてアドバイスをいただければ幸いです。