【问题标题】:Distance between items in a ListviewListview 中项目之间的距离
【发布时间】:2011-01-14 13:27:36
【问题描述】:

我的布局中有一个 ListView。

    <ListView 
        android:id="@+id/list_infoitems"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

每个列表项布局如下:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:background="@drawable/selector_custombutton"
    android:padding="10dp"
    android:layout_gravity="center">
    <TextView
        android:id="@+id/text_history_station_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical|left"
        android:textColor="@color/rnv_blue_540c"/>
    <TextView
        android:id="@+id/text_history_line_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical|left"
        android:textColor="@color/rnv_blue_540c"/>      
</LinearLayout>

我想在所有项目之间保持距离。为此,我使用了 android:margin 属性,但没有成功。

有谁知道,如何改变列表视图中项目之间的距离。

谢谢,

穆尔

【问题讨论】:

  • 每行之间的距离?还是在连续出现的每个项目之间?

标签: android view draw


【解决方案1】:

您始终可以设置 dividerHeight 属性。 Android Docs

<ListView 
    android:id="@+id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:dividerHeight="5dp"
/>

如果这不是您想要做的,在您的列表视图项目中,您可以将您的 LinearLayout 包装在 RelativeLayout 中并为 LinearLayout 添加边距

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp"
    />
</RelativeLayout>

【讨论】:

  • 我和你的第二个建议有同样的想法,但你的第一个对我有帮助,而且更好:) 非常感谢
  • 这对我有用,只是我的列表是黑色的,分隔线是灰色的。确保将分隔线更改为与列表相同的颜色! android:divider="#00000" 在我的例子中。
  • @NPike,或者使用 #00000000 使分隔线透明
【解决方案2】:

我发现 ListView 分隔线存在碎片问题。在 2.3 设备中,默认情况下实现了一条灰线,而在 4.x 设备上不显示。这可以通过手动设置android:divider="some_value" 来解决。我倾向于在项目布局本身中处理所有 ListView 项目布局问题。这是一个肮脏的小技巧,但解决了跨版本问题。请注意下面添加的“隐藏”视图。这不仅解决了项目之间的问题,而且在列表中的最后一项之后为您提供了相等的填充。

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

    <LinearLayout
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginTop="5dp" />

    <View
        android:below="@id/list"
        android:layout_height="0dp"
        android:layout_width="0dp"
        android:margin_top="5dp" />
</RelativeLayout>

【讨论】:

    【解决方案3】:

    使用填充或边距或 ListView 本身。

    <ListView 
            android:id="@+id/list_infoitems"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:padding="5px"
    />
    

    【讨论】:

      【解决方案4】:

      为了增加他们自己可以使用的项目之间的距离

      android:dividerHeight="xxdpi"
      

      <ListView 
          android:id="@+id/list_infoitems"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:dividerHeight="xxdpi"/>
      

      问候, 马可

      【讨论】: