この描画可能な XML ファイルがあります。ターゲットは、外側が黄色で内側が赤の 2 つの同心円フレームを描画することです。そして、コードやビットマップを使用せずに、図形を使用してすべてを XML で実行したいと考えています。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent"/>
<stroke android:width="15dp" android:color="@color/Yellow"/>
</shape>
</item>
<item android:left="5dp">
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent"/>
<stroke android:width="3dp" android:color="@color/Red"/>
</shape>
</item>
</layer-list>
これにより、この画面が生成されます (内側の 3 つの四角形は無視して、縁取りの黄色と赤の四角形のみ)。
これは、黄色のフレームが正常に描画され、赤色のフレームが 5 dp 左オフセットで描画されていることを示しています。私の最終的な赤いフレームは、すべての面でオフフェストを持っている必要があります
<item android:left="5dp" android:top="5dp" android:right="5dp" android:bottom="5dp">
別のオフセットを 1 つだけ追加するとどうなるか見てみましょう
<item android:left="5dp" android:top="5dp">
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent"/>
<stroke android:width="3dp" android:color="@color/Red"/>
</shape>
</item>
必要なオフセットをすべて追加すると、同じことが起こります。item offset に関するドキュメントによると、これは私が期待した
ものではありません 希望どおりに赤いフレームを5dp縮小するにはどうすればよいですか?
EDIT
5dpの1つの負のオフセットを使用して、何か奇妙なものを見つけたオフセットで少し遊んで、私が得たものを見てください:
<item android:left="-5dp" android:top="5dp" android:right="5dp" android:bottom="5dp">
負の値でのみ機能します<= -5dp
。負の値> 5dp
の場合、以前のようにフレームは表示されません。
このすべての動作の理由は、次の 2 つのうちの 1 つにすぎないと強く感じています。
- オフセット値の使用方法をひどく誤解しています
- これはバグのある動作です (その場合、報告できるように確認が必要です)