すべての辺が丸みを帯びた長方形の形状を作成できます。ただし、私が望んでいるのは、エッジが2つだけ丸められた長方形です。これは可能ですか?
私は本質的に、丸みを帯びたエッジを持つバブルのように見える ListView を一緒にハッキングしています。2 つの上端が丸められたヘッダーと、2 つの下端が丸められたフッターを追加しようとしています。
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#FFFFFF"/>
<corners
android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
</shape>
このコードは、Androidバージョン2.2以降で機能しています。ドキュメントを参照すると、コードは次のようになります。
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#FFFFFF"/>
<corners
android:radius="2dp"
android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
</shape>
これは役立つかもしれません。
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/rounded_edittext.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#FFFFFF"/>
<corners
android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
</shape>
android:radius
属性をandroid:topRightRadius
andに変更しましたandroid:topLeftRadius
(あなたの質問を理解する上で)最善の方法は、9patch画像を作成して背景として使用することだと思います-必要に応じてストレッチするように定義し、XMLレベルで設定してコード作業を節約できます
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#FFFFFF"/>
<corners
android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
</shape>
上記のコードを使用してください
角丸長方形を描画してから、角丸長方形の角の半径と同じサイズの 2 つの追加の長方形を描画して、丸めたくない角に配置します。
たとえば、半径が 15 ピクセルの角丸長方形と、15x15 ピクセルの 2 つの通常の長方形を、角を丸くしてはならない角丸長方形の角に配置します。
編集: 質問を読み直して、リストビューの上部と下部に単純な 9 パッチ画像を作成する方がよい場合があります。それらは、ピクセル化せずに任意のサイズに引き伸ばされます。ただし、それには事前に画像を作成する必要があり、長方形の形状で何かを行うと、後でコードで変更するのが簡単になります. ただし、9 パッチの方法はそれほどハックではありません。
角の丸い長方形を描き、次に同じ色の角の丸い長方形の上に通常の長方形を描きます。