丸みを帯びたコーナーを持つリストビューは、以下のように実装されています。Android:ListView、丸みを帯びたコーナーの問題
list_bg.xmlがある<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/list_bg"
android:divider="#dbdbdb"
android:dividerHeight="1sp"
android:cacheColorHint="#00000000"
android:descendantFocusability="afterDescendants"
android:scrollbars="vertical">
</ListView>
:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#ffffff"/>
<corners android:bottomLeftRadius="10dp"
android:bottomRightRadius="10dp"
android:topLeftRadius="10dp"
android:topRightRadius="10dp"
/>
</shape>
これは私に丸みを帯びた角を与えます。 問題は、各アイテムが左側にTextView、右側にImageButtonを持つRelativeLayoutであることです。両方のビューには、押された、塗りつぶされた、デフォルトの状態のカスタムグラフィックがあります。このようなもの。
+------------------------------------+
| TextView | ImageButton |
+------------------------------------+
問題はカスタムグラフィックがListViewの背景を覆い、最初と最後の項目のコーナーを丸くすることです。スクロールするとすべてが大丈夫です。
私はカスタムアダプターを書いています。getViewメソッドでは、項目の適切なbgを設定しました。
@Override
public View getView(int position, View view, ViewGroup parent) {
...
if(position == 0) {
mItemView.setBackgroundResource(R.drawable.cell_item_first_selector);
mImgBtn.setBackgroundResource(R.drawable.cell_btn_first_selector);
}
else if (position == mData.size() -1) {
mItemView.setBackgroundResource(R.drawable.cell_item_last_selector);
mImgBtn.setBackgroundResource(R.drawable.cell_btn_last_selector);
}
else {
mItemView.setBackgroundResource(R.drawable.cell_item_def_selector);
mImgBtn.setBackgroundResource(R.drawable.cell_btn_def_selector);
}
...
}
これはうまくいきますが、それが良い解決策であるかどうかはわかりません。背景を設定するだけでなく、Androidビューで自動的に角を丸める方法はありますか?
それは役に立ちません。まだ最初と最後のアイテムのグラフィックは丸みのあるコーナーを隠します。最初と最後のアイテムに異なるグラフィックスを設定するソリューションはありますか? – Adrian
それはうまくいくはずです。あなたのアイテムのレイアウトのコードをいくつか投稿できますか? –