背景として次のドローアブルセットがあります。
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item>
<bitmap Android:src="@drawable/base_bg"
Android:gravity="bottom" />
</item>
<item Android:top="10dp" Android:left="10dp">
<bitmap Android:src="@drawable/decoration1"
Android:gravity="top|right"
Android:width="25dp"
Android:height="25dp" />
</item>
<item Android:top="10dp" Android:left="10dp">
<bitmap Android:src="@drawable/decoration2"
Android:gravity="top|right"
Android:width="25dp"
Android:height="25dp"
/>
</item>
</layer-list>
すべてのビットマップを表示します(base_bg
、decoration1
、およびdecoration2
)しかし、それらのサイズを変更する方法が見つかりません。メインの背景とその上に、dpiに基づいてサイズが異なる装飾を作成したいと思います。それを行う簡単な方法はありますか、それとも実際にはさまざまなdpi用の「装飾」をたくさん用意する必要がありますか?それは良くありません、そして私は代わりにスケール/サイズ変更オプションを持ちたいです!
Android:width
およびAndroid:height
属性は私が見つけたいものですが、それが機能しないことはわかっています。現時点では、DPIごとに異なるバージョンを使用していますが、もう少しユーザーフレンドリーになることを望んでいます。
これらの画像がどのようになっているのかわかりませんが、たとえば、大きな画像を作成してアイテムのAndroid:drawableフィールドで使用すると、画像はアイテムのサイズになります。
<layer-list
xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item>
<bitmap Android:src="@drawable/base_bg"
Android:gravity="bottom" />
</item>
<item Android:top="10dp" Android:left="10dp" Android:drawable="@drawable/decoration1">
</item>
<item Android:top="10dp" Android:left="10dp" Android:drawable="@drawable/decoration2">
</item>
</layer-list>
他の解決策は、LayerDrawable( here )およびDrawable( here )クラスを使用してプログラムでそれを行うことです。 3つのDrawableオブジェクトを使用してLayerオブジェクトを作成し、setBounds(Rect)メソッドを使用して各Drawableオブジェクトの正しいサイズを選択できます。
お役に立てば幸いです。