web-dev-qa-db-ja.com

1つのAndroidドローアブルで複数のシェイプを使用できますか?

私がやろうとしているのは、LinearLayoutで使用するための共通の背景を定義することです。これは、アプリケーションの多くのアクティビティで頻繁に使用されます。この特定のレイアウトは、各アクティビティの上部に表示されるヘッダーです。

私がやろうとしているのは、線形レイアウトをグラデーションで塗りつぶし、グラデーションの下に水平線を持つドローアブルを作成することです。

これが可能かどうか誰かが知っていますか、それともネストされたレイアウトでのみこの種のことをしなければなりませんか?.

ドローアブルxmlでの私の試みは

 <selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="rectangle">
    <gradient Android:startColor="#AA000000" Android:endColor="#AA333333"
        Android:angle="270" />
</shape>
</item>
<item>
<shape Android:shape="line">
    <stroke Android:width="3dp" Android:color="#FFFFFFFF"
            Android:dashWidth="1dp" Android:dashGap="2dp" />
    <size Android:height="5dp" />
</shape>
</item>
</selector>
19
David Brown

Drawableは複数の形状を受け入れます(常に他のファイルで定義されています)あなたの質問を理解している場合は、レイヤードローアブルを実行できます(これは複数の基礎となるドローアブルを互いに重ねて描画します)

私はこれをここに書いているので、テストはしていませんが、これを試して、この素晴らしいドキュメントを読んでください。

<?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
        <item Android:drawable="@drawable/shape_7"/>
        <item Android:drawable="@drawable/shape_1"/>
    </layer-list>

Android完全なxmlリソース

乾杯

32
Franco

gravityを使用して、itemslayer-listに設定します。

垂直方向の使用:
 Android:gravity = "top" 
 Android:gravity = "center" 
 Android:gravity = "bottom" 
水平方向の使用:
 Android:gravity = "left" 
 Android:gravity = "center" 
 Android:gravity = "right" 
<layer-list
           xmlns:Android="http://schemas.Android.com/apk/res/Android">
          <item>
                <bitmap
                   Android:src="@drawable/top_img"
                   Android:gravity="top"/>
          </item>
          <item>
                <bitmap
                   Android:src="@drawable/center_img"
                   Android:gravity="center"/>
          </item>
          <item>
                <bitmap
                   Android:src="@drawable/bottom_img"
                   Android:gravity="bottom"/>
          </item>
</layer-list>

親要素にすべてのアイテムを保持するのに十分なスペースがあることを確認してください!そうでない場合、それらは互いにオーバーラップします

3
Dani