質問

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

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

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

役に立ちましたか?

解決 2

レイヤーリストを使用して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ドキュメント

他のヒント

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" />

明らかに、必要に応じてテキストとlayout_width/heightを変更します:-)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top