Android Webサイトには、 色のドローアブルに関するセクション があります。これらのドロウアブルを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に丸い角を設定する方法はありますか?
<shape>
タグを使用して、角が丸いXMLでドロアブルを作成します。 (色のグラデーションの定義など、shapeタグを使用して他の操作を行うこともできます)。
これは、私のアプリの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:bottomRightRadius="7dp"
Android:bottomLeftRadius="7dp"
Android:topLeftRadius="7dp"
Android:topRightRadius="7dp" />
</shape>
mbairdの答えはうまくいきます。 Android(少なくとも2.1)にバグがあるように見えることに注意してください。個々のコーナーの半径を0に設定すると、すべてのコーナーが強制的に0になります(少なくとも「 dp」ユニット。他のユニットでは試しませんでした)。
上部の角が丸く、下部の角が正方形の形状が必要でした。正方形にしたいコーナーを0よりわずかに大きい値に設定することでこれを達成しました:0.1dp。これはまだ正方形の角としてレンダリングされますが、他の角を強制的に半径0にすることはありません。
以下のコードを試してください
<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>