17

背景として次のドローアブルセットがあります。

<?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_bgdecoration1decoration2それらのサイズを変更する方法が見つかりません。メインの背景とその上に、dpiに基づいてサイズが異なる装飾が必要です。それを行う簡単な方法はありますか、それとも実際にさまざまなdpi用の「装飾」をたくさん用意する必要がありますか?それは良くありません、そして私は代わりにスケール/サイズ変更オプションを持ちたいです!

android:widthandandroid:height属性は私が見つけたいものですが、機能しないことはわかっています。現在、DPIごとに異なるバージョンを使用していますが、もう少しユーザーフレンドリーになることを望んでいます。

4

1 に答える 1

13

これらの画像がどのようになっているのかわかりませんが、たとえば、大きな画像を作成してアイテムの 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 (ここ) およびDrawable (ここ) クラスを使用してプログラムで実行することです。3 つの Drawable オブジェクトを使用して Layer オブジェクトを構築し、メソッド setBounds(Rect ) を使用して各 Drawable オブジェクトの正しいサイズを選択できます。

お役に立てば幸いです。

于 2011-09-13T19:30:05.533 に答える