我正在尝试将listview项目制成带有圆角的矩形形状,但是我发生了什么,只有第一行在上半部分带有圆角,其余的子列表视图项目都是矩形,没有圆角。我不知道为什么会这样。
这是我的listview代码:
<ListView
android:id="@+id/listViewdoctorwithappointment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="7dp"
android:layout_marginRight="7dp"
android:layout_marginTop="10dp"
android:minHeight="80dp"
android:background="@drawable/customshapeduplicate"
android:cacheColorHint="@android:color/transparent"
android:divider="#4F94CD"
android:dividerHeight="10dp"
android:smoothScrollbar="true"
android:listSelector="@drawable/selector"
android:scrollbars="none" >
</ListView>
这是我的customshapeduplicatefile是这样的:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#ffffff" android:endColor="#ffffff"
android:angle="270"/>
<corners android:bottomRightRadius="10dp" android:bottomLeftRadius="10dp"
android:topLeftRadius="10dp" android:topRightRadius="10dp"/>
</shape>
这是图像:
答案 0 :(得分:4)
我建议你使用自定义列表适配器。根据您的要求修改以下代码。
public View getView(final int arg0, View arg1, ViewGroup arg2) {
final ViewHolder vh;
vh= new ViewHolder();
if(arg1==null )
{
arg1=mInflater.inflate(R.layout.lyourcustomlayouttobe inflated, arg2,false);
arg1.setTag(vh);
}
return arg1;
}
您的自定义布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:cacheColorHint="#000000"
android:background="@drawable/listviewbkg">
//other items to be inlfated.
</LinearLayout>
在资源下创建一个可绘制文件夹。将以下xml发布为listviewbkg
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/pressed" />
<item android:state_focused="false"
android:drawable="@drawable/normal" />
</selector>
在drawable下使用名称normal.xml时的正常形状
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF"/>
<stroke android:width="3dp"
android:color="#0FECFF" /><!-- #330000FF #ffffffff -->
<gradient // remove the gradient if do not wish to use.
android:startColor="#ffffffff"
android:endColor="#110000FF"
android:angle="90"/>
<padding android:left="5dp"
android:top="5dp"
android:right="5dp"
android:bottom="5dp"/>
<corners android:bottomRightRadius="7dp" // change this to increase the rounded edge radius
android:bottomLeftRadius="7dp"
android:topLeftRadius="7dp"
android:topRightRadius="7dp"/>
</shape>
在drawable文件夹中名为pressed.xml的情况下按下时的形状
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FF1A47"/>
<stroke android:width="3dp"
android:color="#0FECFF"/>
<padding android:left="5dp"
android:top="5dp"
android:right="5dp"
android:bottom="5dp"/>
<corners android:bottomRightRadius="7dp"
android:bottomLeftRadius="7dp"
android:topLeftRadius="7dp"
android:topRightRadius="7dp"/>
</shape>
答案 1 :(得分:3)
设置背景不是为listview
而是用custom layout
来显示listview行
android:background="@drawable/customshapeduplicate"
答案 2 :(得分:0)
这是因为background
- 属性是整个列表的背景,而不是单个行。
要实现您的目标,请通过Adapter
或列表项布局设置自定义背景,或查看this答案。