125

アンドロイドのウェブサイトには、カラードローアブルに関するセクションがあります。これらのドローアブルをxmlで定義すると、次のようになります。

<resources>
    <drawable name="solid_red">#f00</drawable>
    <drawable name="solid_blue">#0000ff</drawable>
    <drawable name="solid_green">#f0f0</drawable>
</resources>

Java APIでは、丸みを帯びたコーナーを定義するための次のメソッドがあります。

setCornerRadius(float radius)

xmlで丸みを帯びた角を設定する方法はありますか?

4

3 に答える 3

349

タグを使用して、<shape>角が丸いXMLでドローアブルを作成します。(カラーグラデーションを定義するなど、シェイプタグを使用して他のことを行うこともできます)。

これは、アプリの1つで、背景が白、境界線が黒、角が丸いドローアブルを作成するために使用しているXMLファイルのコピーです。

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#ffffffff"/>    
             
    <stroke android:width="3dp"
            android:color="#ff000000" />

    <padding android:left="1dp"
             android:top="1dp"
             android:right="1dp"
             android:bottom="1dp" /> 
             
    <corners android:radius="7dp" /> 
</shape>
于 2010-01-23T15:55:11.113 に答える
19

mbairdの答えはうまくいきます。Androidにはバグがあるようです(少なくとも2.1)。個々のコーナーの半径を0に設定すると、すべてのコーナーが強制的に0になります(少なくとも「dp」ユニットの場合はそうです。私はしませんでした)。他のユニットでは試さないでください)。

上の角が丸く、下の角が正方形の形が必要でした。これは、正方形にしたいコーナーを0より少し大きい値に設定することで実現しました:0.1dp。これでも正方形のコーナーとしてレンダリングされますが、他のコーナーの半径が0になることはありません。

于 2010-05-07T00:28:32.347 に答える
13

以下のコードを試してください

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners
    android:bottomLeftRadius="30dp"
    android:bottomRightRadius="30dp"
    android:topLeftRadius="30dp"
    android:topRightRadius="30dp" />
<solid android:color="#1271BB" />

<stroke
    android:width="5dp"
    android:color="#1271BB" />

<padding
    android:bottom="1dp"
    android:left="1dp"
    android:right="1dp"
    android:top="1dp" /></shape>

出力

于 2019-02-22T11:25:40.907 に答える