2

AndroidでXMLを使用してドローアブルを作成しようとしていました。要件は、上端にのみ 7 dp の高さのストロークを持つ角の丸い四角形 (4 つの角すべてが丸みを帯びたもの) が必要です。そのために次の XML を使用しています。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <stroke android:width="5dp" android:color="@color/theme_color" />
            <solid android:color="@color/theme_color" />
            <corners
                android:radius="7dp"/>
            <padding android:top="7dp"/>
        </shape>
    </item>

    <item>
        <shape
            android:shape="rectangle">
            <stroke android:width="1dp" android:color="@color/designer_cell_background" />
            <solid android:color="@color/designer_cell_background" />
            <corners
                android:radius="7dp"
                android:topRightRadius="0dp"
                android:topLeftRadius="0dp"/>
            <padding android:bottom="1dp"/>
        </shape>
    </item>
</layer-list>

bottomRight と bottomLeft の角が丸められていないことを除いて、これはほぼ問題なく機能しています。

質問 - 1 : 底の角を丸くするにはどうすればよいですか?

質問 - 2: これは、私が実際に望んでいることを達成するための正しい方法ですか? より良い方法はありますか?私がこれを尋ねているのは、ここで私が実際に2つの長方形を重ねて作成していることを理解しているからです.2番目の長方形は最初の長方形の上端からわずかに下がっているため、最初の長方形の色2 番目のものの上に行。次に、各長方形に角の半径を個別に追加します。私はそれが正しい解決策だとは思わない。しかし、角丸長方形の上部に幅 7 dp のストロークを追加しようとすると失敗しました。私が与えたストロークはすべてのエッジに現れていました。

編集

ここに私が欲しいものがあります:

期待される出力

そして、これは私が現在得ているものです:

実際の出力

4

3 に答える 3

3

        <stroke
            android:width="1dp"
            android:color="#FFFFFF" />

        <solid android:color="#ffffff" />

        <padding
                android:left="0dp"
                android:right="0dp"
                android:top="0dp" />

        <corners android:radius="12dp" />

    </shape>

半径の値を大きくすると曲線の形が大きくなります

于 2014-07-12T06:52:33.363 に答える
2

これがうまくいくことを試してください

このツールは私を助けてくれます。あなたもそれから助けを得ることができます

http://angrytools.com/android/button/

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape android:shape="rectangle">
        <stroke android:width="5dp" android:color="@color/theme_color" />
        <solid android:color="@color/theme_color" />
        <corners
            android:radius="7dp"/>
        <padding android:top="7dp"/>
    </shape>
</item>

<item>
    <shape
        android:shape="rectangle">
        <stroke android:width="1dp" android:color="@color/designer_cell_background" />
        <solid android:color="@color/designer_cell_background" />

       <corners
           android:topLeftRadius="0dp"
           android:topRightRadius="0dp"
           android:bottomLeftRadius="7dp"
           android:bottomRightRadius="7dp"/> 

        <padding android:bottom="1dp"/>
    </shape>
</item>

于 2014-07-12T07:46:44.230 に答える
0

黒と赤の2つの形状を作成し、他の形状を重ねて、探している画像にする必要があると思います。Android の 1 つの形状でそれを達成することはできません。

于 2014-07-13T05:11:34.933 に答える