我遇到了ListView
我正在使用的问题。
我已经定义了一个带圆角的ListView
。这个ListView
有一个标题和几个项目。每个子视图都有自己的background
定义(只有颜色 - 标题为紫色,其他项为白色)。
ListView
有background
来定义圆角。
问题是标题和其他子项的background
位于background
的{{1}}之上。因此,我看不到ListView
的圆角形状。
我正在寻找一种模仿CSS的ListView
属性的方法,以便将项目和标题保留在overflow:hidden
的圆角下。
有解决方法吗?
答案 0 :(得分:1)
尝试使用android:padding="..."
在ListView元素上添加一些填充,但如果列表行具有不同的背景(或渐变背景),则项目与列表边框之间会出现一些颜色差异。
或者,您可以尝试在第一个列表行的顶角和最后一个列表行的底角使用边框半径。您可以在覆盖列表Adapter类的getView(...)
方法时设置正确的后台可绘制xml资源。
<强>实施例。 first_row_bg.xml(第一行):
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient
android:angle="90"
android:startColor="#b3b3b3"
android:endColor="#f5f5f5" />
<corners android:topLeftRadius="12dp"
android:topRightRadius="12dp"/>
</shape>
<强>实施例。 last_row_bg.xml(最后一行):
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient
android:angle="90"
android:startColor="#b3b3b3"
android:endColor="#f5f5f5" />
<corners android:bottomLeftRadius="12dp"
android:bottomRightRadius="12dp"/>
</shape>
<强>实施例。 border_radius_bg.xml(如果列表只有一行):
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient
android:angle="90"
android:startColor="#b3b3b3"
android:endColor="#f5f5f5" />
<corners android:radius="12dp"/>
</shape>
<强>实施例。 gradient_bg.xml(对于中间的行):
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient
android:angle="90"
android:startColor="#b3b3b3"
android:endColor="#f5f5f5" />
</shape>
getView(...)实施示例
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//inflate the layout (if necessary) and set the row content.
....
if(data.length==1) { // if we have only one row
convertView.setBackgroundResource(R.drawable.border_radius_bg);
} else if(position==0) { // first row
convertView.setBackgroundResource(R.drawable.first_row_bg);
} else if(position==data.length-1) { // last row
convertView.setBackgroundResource(R.drawable.last_row_bg);
} else { // row in the middle
convertView.setBackgroundResource(R.drawable.gradient_bg);
}
return convertView;
}
显然,.xml文件应该保存在&#34; drawable&#34; 。目录
答案 1 :(得分:0)
为什么不将listview放在另一个布局中,并向父级提供带圆角的背景资源?
<LinearLayout ...
android:background="@drawable/rounded_corners.xml" />