すべてのエッジが丸みを帯びた長方形の形状を作成できます。しかし、私が望んでいるのは、丸みを帯びたエッジが2つだけの長方形です。これは可能ですか?
私は本質的に、丸みを帯びたエッジを持つバブルのように見えるListViewを一緒にハッキングしています。 2つの上端が丸みを帯びたヘッダーと、2つの下端が丸みを帯びたフッターを追加しようとしています。
Android:radius
属性をAndroid:topRightRadius
およびAndroid:topLeftRadius
に変更しました
<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 version 2.2。 documentation を参照すると、コードは次のようになります。
<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>
(あなたの質問を理解するために)最善のことは、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ピクセルの丸みを帯びた長方形と、丸みを帯びてはならない丸みを帯びた長方形の角に配置された2つの通常の長方形15 x 15ピクセルがあります。
編集:質問を読み直して、リストビューの上部と下部に簡単な9パッチ画像を作成した方が良いかもしれません。ピクセル化せずに、任意のサイズに拡大します。ただし、事前にイメージを作成する必要があります。また、長方形の形状を使用して作業を行うと、後でコードで簡単に変更できます。ただし、9パッチの方法は、ハックの少ないです。