私はアプリのシークバーの親指を作成しようとしていますが、内側の円を別の大きな(半透明の)外側の円で囲みたいと思っています。 layer-list
を使用しようとしていますが、問題があります。以下は私のコードです...
<?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="#00f" />
<size
Android:height="15dp"
Android:width="15dp" />
</shape>
</item>
<item>
<shape
Android:shape="oval" >
<solid Android:color="#f00" />
<size
Android:height="10dp"
Android:width="10dp" />
</shape>
</item>
</layer-list>
大きな青い円の上に小さな赤い円が表示されると思いますが、表示されるのは小さな赤い円だけです。誰にもアイデアはありますか?
これが機能するようになった唯一の方法は、内側の円(つまり、上部の円)の透明なストロークを定義することです。これは、大きい円と小さい円のサイズの差です。
たとえば、これ:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<!-- Larger blue circle in back -->
<item>
<shape Android:shape="oval">
<solid Android:color="#00f"/>
<size
Android:width="15dp"
Android:height="15dp"/>
</shape>
</item>
<!-- Smaller red circle in front -->
<item>
<shape Android:shape="oval">
<!-- transparent stroke = larger_circle_size - smaller_circle_size -->
<stroke Android:color="@Android:color/transparent"
Android:width="5dp"/>
<solid Android:color="#f00"/>
<size
Android:width="10dp"
Android:height="10dp"/>
</shape>
</item>
</layer-list>
...このように見えます:
それが役立つことを願っています。これはドローアブル* .xmlです
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<item>
<shape Android:shape="oval">
<padding
Android:bottom="1dp"
Android:left="1dip"
Android:right="1dp"
Android:top="1dp" />
<solid Android:color="#000" />
</shape>
</item>
<item>
<shape Android:shape="oval">
<padding
Android:bottom="1dp"
Android:left="1dip"
Android:right="1dp"
Android:top="1dp" />
<solid Android:color="#EEE" />
</shape>
</item>
</layer-list>
遅くなりましたが、役立つかもしれません。センターサークルにパディングを使用できます。
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item>
<shape
Android:shape="oval">
<solid
Android:color="#00fff"/>
<padding
Android:bottom="30dp"
Android:left="30dp"
Android:right="30dp"
Android:top="30dp"/>
<stroke
Android:width="1dp"
Android:color="@color/holo_red_light"/>
</shape>
</item>
<item>
<shape
Android:shape="oval">
<solid
Android:color="#00666666"/>
<size
Android:width="120dp"
Android:height="120dp"/>
<stroke
Android:width="1dp"
Android:color="@color/holo_red_light"/>
</shape>
</item>
</layer-list>
<item>
で<layer-list>
の幅と高さを設定することで、これを解決することができました。おそらく最良の方法ではありませんが、固定サイズのリストビューのアイコンの背景の場合と同様に問題ないようです。
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<!-- larger circle at the back -->
<item Android:height="54dp" Android:width="54dp" Android:gravity="center">
<shape
Android:shape="oval">
<solid
Android:color="#0000FF"/>
<!-- thicker outer boarder -->
<stroke
Android:width="2dp"
Android:color="#000000"/>
</shape>
</item>
<!-- inner circle -->
<item Android:height="40dp" Android:width="40dp" Android:gravity="center">
<shape
Android:shape="oval" >
<solid
Android:color="#00FF00"/>
<stroke
Android:width="1dp"
Android:color="#000000"/>
</shape>
</item>
</layer-list>
以下のコードスニペットが役立つことを願っています:)
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<!-- larger circle at the back -->
<item>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:innerRadius="0dp"
Android:shape="ring"
Android:thicknessRatio="2"
Android:useLevel="false" >
<solid Android:color="#FFFFFF" />
<stroke
Android:width="1dp"
Android:color="#000000" /></shape>
</item>
<!-- inner circle -->
<item >
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:innerRadius="0dp"
Android:shape="ring"
Android:thicknessRatio="2.1"
Android:useLevel="false" >
<solid Android:color="#000000" />
<stroke
Android:width="1dp"
Android:color="#FFFFFF" /></shape>
</item>
</layer-list>
これはショーン・バーボーの答えの短いバージョンです
<stroke
Android:width="1dp"
Android:color="@color/white" />
<solid Android:color="@color/dark_blue" />
<size
Android:width="14dp"
Android:height="14dp" />
Shap
属性を使用する必要があります
xmlコードdrawable
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:shape="oval">
<stroke Android:width="2dp" Android:color="#B91969"/>
<size Android:width="@dimen/dim_16dp" Android:height="@dimen/dim_16dp" />
<solid Android:color="#0f0" />
</shape>
出力