我有带有圆角的 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 方法中为项目设置了正确的背景。
@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 视图中自动圆角吗?