1

この描画可能な 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 つにすぎないと強く感じています。

  • オフセット値の使用方法をひどく誤解しています
  • これはバグのある動作です (その場合、報告できるように確認が必要です)
4

0 に答える 0