61

私は現在、コードのカスタムビューでキャンバス上にいくつかの円を描いています。円は静的であり、変化しません。コードをクリーンアップするために、xmlのShapeDrawableを使用してそれらを描画したいと思います。ユーザーが選択できるさまざまなドローアブルがいくつかあるので、コードでこれを実行したくありません。3つまたは4つのxmlドロアブルがあることは、私には非常にすっきりしているように思えます。

ShapeDrawableを使用してxmlに1つの円を作成しましたが、xmlに複数の形状を追加できません。

ShapeDrawableを使用してxmlドキュメントに複数の図形を追加するにはどうすればよいですか。

4

2 に答える 2

99

これは、1ピクセルの黒い境界線で塗りつぶされた赤い円を作成した方法で、真ん中に白い数字72があります:

res\drawable に XML ファイルを作成し、適切な名前を付けます (例: red_circle_black_border.xml)。

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="oval">
            <solid android:color="@android:color/black" />
        </shape>
    </item>
    <item android:top="1dp" android:left="1dp" android:right="1dp" android:bottom="1dp">
        <shape android:shape="oval">
            <solid android:color="@android:color/red" />
        </shape>
    </item>
</layer-list>

次に、レイアウトで使用するには、次のように宣言します。

<TextView
    android:text="72"
    android:textSize="14dp"
    android:textStyle="bold"
    android:background="@drawable/red_circle_black_border" 
    android:layout_width="22dp"
    android:layout_height="22dp"
    android:gravity="center_vertical|center_horizontal"
    android:textColor="@android:color/white" />

明らかに、必要に応じて textSize と layout_width/height を変更してください:-)

于 2011-03-21T11:57:07.443 に答える
53

Layer-list を使用して複数の形状を xml ファイルに追加する解決策を見つけたと思います。私はまだこれを試していませんが、形状は配列インデックスの順序で描画されるため、これはまさに私が望むものではないようです。

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
   <item>
      <shape>
         <solid android:color="#FFF8F8F8" />
      </shape>
   </item>
   <item android:top="23px">
      <shape>
         <solid android:color="#FFE7E7E8" />
      </shape>
   </item>
</layer-list>

ブログ投稿

Android ドキュメント

于 2010-11-05T12:15:47.647 に答える