У меня ListView с закругленными углами, реализованными как ниже.
<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>
, где list_bg.xml:
<?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>
Это дает мне закругленные углы.Проблема в том, что каждый элемент имеет RelativeLayout с TextView на левой стороне и ImageButton на правой стороне.Оба вида имеют пользовательскую графику в нажатом, выключенном состоянии и состоянии по умолчанию.Примерно так.
+------------------------------------+
| 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, кроме установки фона?