LayerDrawable(XMLではlayer-listとして定義されています)を使用して、複数の形状のドローアブルを相互にレイヤー化しようとしています。レイアウトの背景として使用されます。
Androidガイド(LayerList用)には次のように書かれています。
デフォルトでは、すべての描画可能なアイテムは、含まれているビューのサイズに合わせて拡大縮小されます。したがって、画像をレイヤーリストのさまざまな位置に配置すると、ビューのサイズが大きくなり、一部の画像が適切に拡大縮小される場合があります。リスト内のアイテムのスケーリングを回避するには、
<bitmap>
要素内の<item>
要素を使用してドローアブルを指定し、「中心」などのスケーリングされないものに重力を定義します。
図形を拡大縮小したくないのですが、bitmap
タグで正しくラップする方法がわかりません。次のようにするとエラーが発生します。
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap
android:src="@drawable/layer_one"
android:gravity="center" />
</item>
<item>
<bitmap
android:src="@drawable/layer_two"
android:gravity="center" />
</item>
<item>
<bitmap
android:src="@drawable/layer_three"
android:gravity="center" />
</item>
<item>
<bitmap
android:src="@drawable/layer_four"
android:gravity="center" />
</item>
</layer-list>
文句を言う:
バイナリXMLファイルの行#25:
<bitmap>
有効なsrc属性が必要です
ドローアブルの1つの例(例:res / drawable / layer_one.xml):
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/layer_one.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="#FFFFFF"/>
<corners
android:bottomRightRadius="15dp"
android:bottomLeftRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp" />
</shape>
Androidサイトで使用されている例では、XMLで定義された形状ではなく、画像を描画可能として使用しています(私のエラーはこれらに固有であり、どこかでばかげた間違いを犯していないことは言うまでもありません)。手がかりをいただければ幸いです。
ドローアブルリソース
の使用
この質問の回答は、ビットマップのsrcとしてXMLドローアブルを使用できないことを示しています。質問のタイトルを修正して、を使用せずに図形が拡大縮小されないようにする(これにより、コンテナビューのサイズを変更する)方法を尋ねますかbitmap
、それとも実際の画像リソースを使用する必要がありますか?
目的の結果の画像を追加しました。通常の長方形で塗りつぶされた形状などの背景を作成し、その上にさらに多くの形状の描画可能オブジェクトを重ねることができます(ここでは3つの楕円があります)。左側は上と左のオフセットが許可されている理想的な場所であり、右側はすべての形状がデフォルトの位置に移動するだけの場所です。