【问题标题】:How to draw vertical lines between columns of a list view in android如何在android中的列表视图的列之间绘制垂直线
【发布时间】:2015-06-08 11:42:48
【问题描述】:

在这里,我正在创建一个由多列列表视图组成的 android 应用程序。通过这个多列列表视图,我想通过在它们之间绘制一条垂直线来分隔每列的数据。谁能告诉我如何在列表视图列之间绘制垂直线。提前谢谢

这是我的列表视图布局

<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"
    tools:context="com.developer.milanandroid.AC_fuse_ckt" >


    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="35dp"
        android:layout_below="@+id/pager_sliding_tab_strip"
        android:weightSum="4" >

        <TextView
            android:id="@+id/txt_s.no"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginLeft="30dp"
            android:text="sno"
            android:textSize="20dp" />

        <TextView
            android:id="@+id/txt_test_point_name"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginLeft="100dp"
            android:text="Pointname"
            android:textSize="20dp" />

        <TextView
            android:id="@+id/txt_Description"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginLeft="120dp"
            android:text="Description"
            android:textSize="20dp" />

        <TextView
            android:id="@+id/txt_Range"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginLeft="110dp"
            android:text="Range"
            android:textSize="20dp" />

        <TextView
            android:id="@+id/txt_Measurement"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginLeft="80dp"
            android:text="Result"
            android:textSize="20dp" />
    </LinearLayout>
    <View android:id="@+id/view_1"
          android:layout_width="match_parent"
          android:layout_height="1dp"
          android:background="#BDBDBD"
          android:layout_below="@+id/linearLayout1"/>

    <ListView
        android:id="@+id/listView_bc_fuse_ckt_tests"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:padding="20dp"

        android:layout_below="@+id/linearLayout1" >
    </ListView>

</RelativeLayout>

【问题讨论】:

  • 您可以使用 GridView 代替 ListView
  • 能否提供包含ListViews 的布局文件?您是使用多个ListViews 还是将每个ListItem 中的列分开?
  • 感谢您的回复,伙计。但是,我想在这里使用列表视图是否可以使用列表视图@SandeepSingh
  • @dEePU 是的,但是你能发布你的布局
  • 我发布了我的布局,请检查一下伙计@SandeepSingh

标签: android android-listview divider multiple-columns


【解决方案1】:

你可以用这个

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center"
        android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="2dp"
        android:layout_height="match_parent"
        android:background="#000000"
        android:text="" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center"
        android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit" />

    <TextView
        android:layout_width="2dp"
        android:layout_height="match_parent"
        android:background="#000000"
        android:text="" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center"
        android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit" />

</LinearLayout>

希望对你有帮助

【讨论】:

  • 但我希望它出现在列表视图老兄@Sandeep Singh
  • 这是适配器布局
  • ListView 只包含行
  • 我知道那个家伙,但在这里我需要列表视图的列之间的垂直线@Sandeep Singh
【解决方案2】:

对于没有太多列且每列具有固定大小的列表的一个技巧是使用用于划分标题的相同尺寸来简单地划分列表项布局。

然后,在列表行的每一列之间,你可以

  • 添加一个宽度为 1 像素的 View 和所需的分隔符颜色作为背景颜色
  • 或在左侧或右侧有边框的每个单元格上放置背景图像,可能使用 9-patch
  • 或让LinearLayout 为您完成这项工作!

关于第三种解决方案的一些细节: 使用LinearLayoutandroid:orientation:"horizontal"。您可以使用android:layout_weight 自定义单元格填充可用空间的方式,或将一些设置为您在android:layout_width 中指定的固定宽度。对于使用权重调整的单元格,android:layout_width 应设置为 wrap_content

那么,魔法属性来了:

<LinearLayout
    android:divider="@drawable/yourDividerDrawable"
    android:showDividers="middle"
/>

就是这样!

showDividers 属性告诉 LinearLayout 使用divider 属性中指定的可绘制对象自动为您在项目之间绘制分隔线。 这里,showDividers 设置为middle,以便仅在项目之间绘制分隔线。其他可能的值允许在第一项之前或最后一项之后添加分隔符。

【讨论】:

    【解决方案3】:

    list_item.xml

        <?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="wrap_content"
        android:orientation="vertical" >
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:orientation="horizontal"
            android:weightSum="8" >
    
            <TextView
                android:layout_width="0dp"
                android:layout_height="50dp"
                android:layout_weight="0.80"
                android:gravity="center"
                android:paddingLeft="@dimen/medium_padding"
                android:singleLine="true"
                android:text="a" />
    
            <View
                android:layout_width="0.5dp"
                android:layout_height="50dp"
                android:background="@android:color/darker_gray" />
    
            <TextView
                android:layout_width="0dp"
                android:layout_height="50dp"
                android:layout_weight="0.80"
                android:gravity="center"
                android:paddingLeft="@dimen/medium_padding"
                android:singleLine="true"
                android:text="B" />
    
            <View
                android:layout_width="0.5dp"
                android:layout_height="50dp"
                android:background="@android:color/darker_gray" />
    
            <TextView
                android:layout_width="0dp"
                android:layout_height="50dp"
                android:layout_weight="1.20"
                android:gravity="center"
                android:paddingLeft="@dimen/medium_padding"
                android:singleLine="true"
                android:text="C" />
    
            <View
                android:layout_width="0.5dp"
                android:layout_height="50dp"
                android:background="@android:color/darker_gray" />
    
            <TextView
                android:layout_width="0dp"
                android:layout_height="50dp"
                android:layout_weight="1.20"
                android:gravity="center"
                android:paddingLeft="@dimen/medium_padding"
                android:singleLine="true"
                android:text="D" />
    
            <View
                android:layout_width="0.5dp"
                android:layout_height="50dp"
                android:background="@android:color/darker_gray" />
    
            <TextView
                android:layout_width="0dp"
                android:layout_height="50dp"
                android:layout_weight="1.30"
                android:gravity="center"
                android:paddingLeft="@dimen/medium_padding"
                android:singleLine="true"
                android:text="E" />
    
            <View
                android:layout_width="0.5dp"
                android:layout_height="50dp"
                android:background="@android:color/darker_gray" />
    
            <TextView
                android:layout_width="0dp"
                android:layout_height="50dp"
                android:layout_weight="0.70"
                android:gravity="center"
                android:paddingLeft="@dimen/medium_padding"
                android:singleLine="true"
                android:text="F" />
    
            <View
                android:layout_width="0.5dp"
                android:layout_height="50dp"
                android:background="@android:color/darker_gray" />
    
            <TextView
                android:layout_width="0dp"
                android:layout_height="50dp"
                android:layout_weight="1.20"
                android:gravity="center"
                android:paddingLeft="@dimen/medium_padding"
                android:singleLine="true"
                android:text="G" />
    
            <View
                android:layout_width="0.5dp"
                android:layout_height="50dp"
                android:background="@android:color/darker_gray" />
    
            <TextView
                android:layout_width="0dp"
                android:layout_height="50dp"
                android:layout_weight="0.80"
                android:gravity="center"
                android:paddingLeft="@dimen/medium_padding"
                android:singleLine="true"
                android:text="H" />
        </LinearLayout>
    
    </LinearLayout>
    

    【讨论】:

      【解决方案4】:

      一种不需要您更改行布局的非常简单的方法是将列表视图包装在 FrameLayout 中。在这种情况下,我从左边距放置 2 行 100dp 和 102 dp。

      <FrameLayout
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:layout_weight="1">
      
          <ListView
              android:id="@+id/myListView"
              android:layout_width="match_parent"
              android:layout_height="fill_parent"
              android:cacheColorHint="#00000000"
              />
      
          <TextView
              android:layout_width="1dp"
              android:layout_marginLeft="100dp"
              android:layout_height="fill_parent"
              android:background="@color/red"
              />
      
          <TextView
              android:layout_width="1dp"
              android:layout_height="fill_parent"
              android:layout_marginLeft="102dp"
              android:background="@color/red"/>
      
      </FrameLayout>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-13
        • 1970-01-01
        • 1970-01-01
        • 2021-01-13
        • 2021-05-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多