Android自定义列表视图,项目之间有空格

时间:2014-01-21 20:42:15

标签: android listview android-listview

如何制作列表视图如下:

listview with spaces between each item

还有一个关于行布局的问题,我有这样的布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="100dp"
        android:background="@drawable/deals_list_row_gradient_background"
        android:orientation="horizontal" >

        <ImageView
            android:id="@+id/dealImg"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_gravity="top"
            android:src="@drawable/test" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/dealDescription"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:layout_marginRight="5dp"
                android:layout_marginTop="5dp"
                android:text="Lorem Ipsum dolor sit amet dolor sed a ite amkt Lantin dolor latim dk kuitshen sed iditur anet" />

            <TextView
                android:id="@+id/smth"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="4dp"
                android:layout_marginRight="4dp"
                android:text="...................................................."
                android:textAppearance="?android:attr/textAppearanceSmall" />

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent" >

                <TextView
                    android:id="@+id/dealNewPrice"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentBottom="true"
                    android:layout_alignParentRight="true"
                    android:layout_marginRight="5dp"
                    android:text="1248$"
                    android:textColor="@color/deals_list_new_price"
                    android:textSize="18sp"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/dealOldPrice"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentBottom="true"
                    android:layout_marginRight="15dp"
                    android:layout_toLeftOf="@+id/dealNewPrice"
                    android:text="2500$"
                    android:textColor="@color/deals_list_old_price"
                    android:textSize="15sp" />
            </RelativeLayout>
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

但是我遇到了imageview问题,我不明白如何正确设置它的宽度和高度 也有很多人说我使用RalativeLayout是个坏主意

4 个答案:

答案 0 :(得分:14)

您可以使用修改后的列表视图布局轻松完成此操作。以下是我的实施方式:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/transparent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:divider="@android:color/transparent"
        android:dividerHeight="10dp" />

</RelativeLayout>

以下是结果视图:

corrected list view

有一点需要注意:

此屏幕截图是在xhdpi设备上拍摄的 - 您可以看到虚线的问题。请考虑使用ShapeDrawable,并指定android:dashGapandroid:dashWidth

答案 1 :(得分:7)

在xml中的listview中使用这两行:

 android:divider="@android:color/transparent" 
 android:dividerHeight="10px"

并为您的Imageview尝试以下两个补充:

 <ImageView
            ...
  android:scaleType="fitCenter"
  android:adjustViewBounds="true"
 />

答案 2 :(得分:2)

您正在寻找Google即时等中的卡式UI。您可以使用自定义库Cards-UI获得类似的效果。 https://github.com/afollestad/Cards-UI

答案 3 :(得分:0)

在ListView中设置这两个属性,它将提供顶部和底部边距

   android:divider="@android:color/transparent"
   android:dividerHeight="10dp"

并设置

   android:layout_margin="7dp"

到ListView获取左右边距,它将给出所需的布局