ListView圆角在android中列出项目的背景图像隐藏

时间:2012-03-19 09:43:04

标签: android

enter image description here Using Padding... When Screen Called我已经为listview提供了边框。 并在列表项中给出背景图像。 所以由于列表项的背景图像列表视图的边框隐藏。

listview

<ListView
        android:id="@+id/listViewsea"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_marginBottom="5dp"
        android:cacheColorHint="#0000"
        android:clipToPadding="true"
        android:scrollbars="none"
        android:listSelector="@android:color/transparent"
        android:divider="#00000000"
        android:paddingBottom="5dp"
        android:background="@drawable/cornerborder"
        >
    </ListView>

cornerborder.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <stroke
        android:width="1dp"
        android:color="#457DB6" />

    <gradient
        android:angle="225"
        android:endColor="#457DB6"
        android:startColor="#457DB6" />

    <corners
        android:bottomLeftRadius="15dp"
        android:bottomRightRadius="15dp"
        android:topLeftRadius="15dp"
        android:topRightRadius="15dp" />

</shape>

在listAdapter中

if(position%2 == 0)
            {
                    convertView.setBackgroundResource(R.drawable.commonrow_type_1_straight);

            }else 
            {
                                convertView.setBackgroundResource(R.drawable.commonrow_type_2_straight);

            }

2 个答案:

答案 0 :(得分:1)

感谢上帝终于得到了解决方案........ 这里是XML

 <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:background="@drawable/lineargallarybackground"
        android:clipChildren="true"
        android:orientation="vertical" >
        <TextView
            android:id="@+id/textlisttitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/titlebackground"
            android:gravity="center_horizontal|center_vertical"
            android:text="Kuwait" >
        </TextView>
        <ListView
            android:id="@+id/listViewsea"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_marginBottom="5dp"
            android:cacheColorHint="#0000"
            android:clipChildren="true"
            android:clipToPadding="true"
            android:divider="#00000000"
            android:listSelector="@android:color/transparent"
            android:scrollbars="none" >
        </ListView>
     </LinearLayout>

我在Linearlayout中设置了背景图片。

答案 1 :(得分:0)

如果有人(像我一样)正在寻找一个解决方案,将listview 直接推到舍入的边缘而不添加填充,那么这应该可以解决问题:

尝试继承ListView(或包含布局)并重写OnDraw方法,如下所示,用值替换RADIUS_IN_PIXELS:

@Override
protected void onDraw(Canvas canvas) {
    Path clipPath = new Path();
    clipPath.addRoundRect(new RectF(canvas.getClipBounds()), RADIUS_IN_PIXELS, RADIUS_IN_PIXELS, Path.Direction.CW);
    canvas.clipPath(clipPath);
    super.onDraw(canvas);
}

...并创建一个像这样的自定义drawable,称为'rounded',替换为YOUR_BACKGROUND_COLOR和RADIUS_IN_DP,确保将DP中矩形的舍入与PX中之前的剪切半径相匹配:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="RADIUS_IN_DP" />
    <solid android:color="YOUR_BACKGROUND_COLOR"/>
</shape>

然后您可以在布局中使用该子类,将以下行添加到ListView或包含布局:

android:background="@drawable/rounded"
android:clipChildren="true"

所有孩子都将剪辑到您在OnDraw()覆盖中指定的边界,并且将根据您的“圆形”绘图添加背景。