Как рисовать вертикальные линии между столбцами списка в Android

Здесь я создаю приложение для 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>

person dEePU    schedule 08.06.2015    source источник
comment
Вы можете использовать для этого GridView вместо ListView   -  person Sandeep Singh    schedule 08.06.2015
comment
Можете ли вы предоставить файл макета, содержащий ListViews? Вы используете несколько ListView или разделяете столбцы внутри каждого ListItem?   -  person AlexWalterbos    schedule 08.06.2015
comment
Спасибо за ваш ответ, чувак. Но здесь я хочу использовать представление списка, возможно ли это с представлением списка @SandeepSingh   -  person dEePU    schedule 08.06.2015
comment
@dEePU Да, но можете ли вы опубликовать свой макет   -  person Sandeep Singh    schedule 08.06.2015
comment
Я разместил свой макет, пожалуйста, проверьте его, чувак @SandeepSingh   -  person dEePU    schedule 08.06.2015
comment
Я разместил свой макет, пожалуйста, проверьте его, чувак @AlexWalterbos   -  person dEePU    schedule 08.06.2015


Ответы (4)


Вы можете использовать это

<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>

Я надеюсь, что это поможет вам

person Sandeep Singh    schedule 08.06.2015
comment
Но я хочу, чтобы это было в списке, чувак @Sandeep Singh - person dEePU; 08.06.2015
comment
Это макет адаптера - person Sandeep Singh; 08.06.2015
comment
ListView содержит только строки - person Sandeep Singh; 08.06.2015
comment
Я знаю этого чувака, но здесь мне нужны вертикальные линии между столбцами представления списка @Sandeep Singh - person dEePU; 08.06.2015

Один трюк для списка, который не имеет слишком много столбцов, каждый столбец имеет фиксированный размер, заключается в том, чтобы просто разделить макет элемента списка, используя те же размеры, которые вы используете для разделения заголовков.

Затем между каждым столбцом в строке списка вы можете

  • добавьте View шириной 1 пиксель и желаемый цвет разделителя в качестве цвета фона
  • или поместите фоновое изображение в каждую ячейку, которая имеет границу слева или справа, возможно, используя 9-патч
  • или пусть LinearLayout сделает всю работу за вас!

Некоторые подробности о третьем решении: используйте LinearLayout с android: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, чтобы разделители рисовались только между элементами. Другие возможные значения позволяют добавлять разделители перед первым элементом или после последнего.

person DavGin    schedule 08.06.2015

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>
person krunal shah    schedule 08.06.2015

Очень простой метод, не требующий изменения макета строки, заключается в заключении списка в FrameLayout. В этом случае я помещаю 2 строки на 100 дп и 102 дп от левого поля.

<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>
person miannelle2    schedule 08.03.2016