このコードを使用すると、境界線が表示されます。
<shape
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="ring"
Android:innerRadius="15dp"
Android:thickness="2dp"
Android:useLevel="false">
<solid Android:color="#4d4d4d" />
</shape>
下の画像のようなリング形状を作成するにはどうすればよいですか?
2dpギャップのある2dp外輪:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item
Android:top="4dp"
Android:right="4dp"
Android:bottom="4dp"
Android:left="4dp">
<shape
Android:shape="oval">
<solid Android:color="#4d4d4d" />
</shape>
</item>
<item>
<shape
Android:shape="oval">
<stroke Android:width="2dp"
Android:color="#4d4d4d"/>
</shape>
</item>
</layer-list>
リングドロウアブルは要素の並置で、layer-listを使用
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:right="6dip" Android:left="6dip">
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:innerRadius="0dp"
Android:shape="ring"
Android:thicknessRatio="3"
Android:useLevel="false" >
<solid Android:color="@Android:color/transparent" />
<stroke
Android:width="5dp"
Android:color="@color/maroon" />
</shape>
</item>
<item Android:right="20dip"
Android:left="20dip"
Android:bottom="0dip"
Android:top="34dip">
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle"
Android:innerRadius="0dp">
<solid Android:color="@color/maroon" />
<stroke Android:width="1dip" Android:color="@Android:color/transparent" />
</shape>
</item>
<item Android:right="20dip"
Android:left="20dip"
Android:bottom="34dip"
Android:top="0dip">
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle"
Android:innerRadius="0dp">
<solid Android:color="@color/maroon" />
<stroke Android:width="1dip" Android:color="@Android:color/transparent" />
</shape>
</item>
</layer-list>
Xmlは静的な画像よりも有用であり、.9ライブラリやGimp、Photoshopから異なるサイズのセットを生成することなく、正しくスケーリングできます。
Androidでのシェイプの使用は、Photoshopでのシェイプよりも優れていると思います。
たとえば、新しい画像リソースを作成する代わりに、コードを使用して色や形状を変更できるため、ドローアブルを作成する方が適切です。 2つのFrameLayout
とViews
でTextView
を作成します。最初のビューの背景は外側のリング(形状)で、2番目のビューの背景は塗りつぶされた円(形状)です。最後に、最後のView
(より大きなz-index)TextView
:
<FrameLayout>
<View/><!-- (outer ring)-->
<View/><!-- (filed circle)-->
<TextView/><!-- (text)-->
</FrameLayout>
<item>
<shape
Android:innerRadiusRatio="4"
Android:shape="ring"
Android:thicknessRatio="15"
Android:useLevel="false" >
<solid Android:color="@color/white_color" />
<size
Android:height="48dip"
Android:width="48dip" />
</shape>
</item>
<item>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="ring"
Android:innerRadius="0dp"
Android:thickness="55dp"
Android:useLevel="false">
<solid Android:color="@color/white_color"/>
<size Android:height="200dp"
Android:width="200dp"/>
<stroke Android:color="@color/green_color" Android:width="5dp"/>
</shape>
</item>
<?xml version="1.0" encoding="utf-8"
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item>
<shape Android:innerRadius="10dp" Android:shape="ring" Android:thickness="2dp" Android:useLevel="false">
<solid Android:color="#dfdfdf" />
</shape>
</item>
</selector>