背景として丸い長方形を持つために、このドロアブルがありました:
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<solid Android:color="@color/white" />
<stroke Android:width="1dp" Android:color="@color/light_gray" />
<padding Android:left="10dp" Android:top="10dp" Android:right="10dp" Android:bottom="10dp" />
<corners Android:radius="6dp" />
</shape>
予想どおり、これは正常に機能しています。
さて、これを変更して、上の角だけを丸めたいので、これに変更します:
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<solid Android:color="@color/white" />
<stroke Android:width="1dp" Android:color="@color/light_gray" />
<padding Android:left="10dp" Android:top="10dp" Android:right="10dp" Android:bottom="10dp" />
<corners Android:topLeftRadius="6dp" Android:topRightRadius="6dp"
Android:bottomLeftRadius="0dp" Android:bottomRightRadius="0dp"/>
</shape>
しかし、今では角のいずれも丸くならず、プレーンな長方形が得られます。ここで何が欠けていますか?
これらの値を与えてみてください:
<corners Android:topLeftRadius="6dp" Android:topRightRadius="6dp"
Android:bottomLeftRadius="0.1dp" Android:bottomRightRadius="0.1dp"/>
0dp
を0.1dp
に変更したことに注意してください。
編集:Aleks Gコメント を参照してください。
次のようなことを試してください。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:bottom="-20dp" Android:left="-20dp">
<shape Android:shape="rectangle">
<solid Android:color="@color/white" />
<corners Android:radius="20dp" />
</shape>
</item>
</layer-list>
長方形の異なるコーナー半径を設定するのは適切ではないようです。したがって、このハックを使用できます。
私の場合、以下のコード
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:top="10dp" Android:bottom="-10dp"
>
<shape Android:shape="rectangle">
<solid Android:color="@color/maincolor" />
<corners
Android:topLeftRadius="10dp"
Android:topRightRadius="10dp"
Android:bottomLeftRadius="0dp"
Android:bottomRightRadius="0dp"
/>
</shape>
</item>
</layer-list>
busylee's answer に基づいて、これは、1つのun角が丸いdrawable
を作成する方法です(この例では左上):
<?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="@color/white" />
<!-- A numeric value is specified in "radius" for demonstrative purposes only,
it should be @dimen/val_name -->
<corners Android:radius="10dp" />
</shape>
</item>
<!-- To keep the TOP-LEFT corner UNROUNDED set both OPPOSITE offsets (bottom+right): -->
<item
Android:bottom="10dp"
Android:right="10dp">
<shape Android:shape="rectangle">
<solid Android:color="@color/white" />
</shape>
</item>
</layer-list>
上記のdrawable
は、Android Studioプレビュー(2.0.0p7)で正しく表示されるnotであることに注意してください。とにかくプレビューするには、別のビューを作成し、これをAndroid:background="@drawable/..."
として使用します。
私はあなたのコードを試してみて、上部の丸い角のボタンを手に入れました。 @ffffff
として色を指定し、#C0C0C0
としてストロークを指定しました。
試してみる
これを読む必要があるかもしれません https://developer.Android.com/guide/topics/resources/drawable-resource.html#Shape
そして、下にメモがあります。
注すべてのコーナーには、(最初に)1より大きいコーナー半径を指定する必要があります。そうしないと、コーナーが丸くなりません。特定のコーナーを丸くしたくない場合、回避策はAndroid:radiusを使用してデフォルトのコーナー半径を1より大きい値に設定し、各コーナーを実際に必要な値でオーバーライドし、ゼロ( "0dp" )角を丸くしたくない場合。
drawableでroung_top_corners.xmlを作成し、以下のコードをコピーします
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android" Android:shape="rectangle" >
<corners
Android:topLeftRadius="22dp"
Android:topRightRadius="22dp"
Android:bottomLeftRadius="0dp"
Android:bottomRightRadius="0dp"
/>
<gradient
Android:angle="180"
Android:startColor="#1d2b32"
Android:centerColor="#465059"
Android:endColor="#687079"
Android:type="linear" />
<padding
Android:left="0dp"
Android:top="0dp"
Android:right="0dp"
Android:bottom="0dp"
/>
<size
Android:width="270dp"
Android:height="60dp"
/></shape>