How to assign padding to Listview item divider line

后端 未结 6 1824
眼角桃花
眼角桃花 2020-12-07 10:31

\"enter

How can i give padding to list item as i show in image. I want to make the div

相关标签:
6条回答
  • 2020-12-07 11:00

    In your listitem give the paddingtop to the main layout as

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
       android:padding="10dp"
       ....// Remaining fields
    >
    ... //Remaining items
    </LinearLayout>
    
    0 讨论(0)
  • 2020-12-07 11:01

    this should be alternative solution for this question:

    <View 
       android:layout_width="match_parent"
       android:layout_height="1dp"
       android:layout_alignParentBottom="true"
       android:background="color/secondary_text"
       android:layout_marginTop="16dp" />
    
    0 讨论(0)
  • 2020-12-07 11:02

    set your list item divider height and color:

    <ListView 
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:id="@+id/listV_main"
    android:layout_marginLeft="25dp"
    android:layout_marginRight="25dp"
    android:divider="@android:color/darker_gray"
    android:dividerHeight="1dp"/>
    
    0 讨论(0)
  • 2020-12-07 11:09

    You need padding for dividers? Create your custom drawable-shape as:

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <item
            android:left="10dp"
            android:right="10dp">
            <shape android:shape="rectangle" >
                <solid android:color="@android:color/black" />
            </shape>
        </item>
    
    </layer-list>
    

    And set as divider for your ListView in xml:

    <ListView
        android:dividerHeight="2dp"
        android:divider="@drawable/custom_divider"
        ...
    />
    

    UPD

    I just have ListView in xml:

    <ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:dividerHeight="2dp"
    android:divider="@drawable/line"
    />
    

    Divider as line.xml in drawable:

    <?xml version="1.0" encoding="utf-8"?>
        <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
            <item
            android:left="10dp"
            android:right="10dp">
            <shape android:shape="rectangle" >
                <solid android:color="@android:color/black" />
            </shape>
        </item>
    </layer-list>
    

    Do not make any modifications on the ListView in code. You can try to use Clean if resources are wrong builded.

    0 讨论(0)
  • 2020-12-07 11:11

    Use 'inset'.....

    (list_divider.xml)

    <?xml version="1.0" encoding="UTF-8"?>
    <inset xmlns:android="http://schemas.android.com/apk/res/android"
        android:insetLeft="50dp"
        android:insetRight="50dp" >
    
     <shape>
        <solid android:color="@color/orange" />
        <corners android:radius="2.0dip" />
    </shape>
    
    </inset>
    

    and in your list view add like this...

    <ListView
        android:dividerHeight="2dp"
        android:divider="@drawable/list_divider"
        ...
    />
    

    you can set the inset value as desired...

    UPDATE

    As pointed out by @Giulio Piancastelli , If the background of list container is different from background of list item then you may use 'layer-list'...

    (list_divider.xml)

      <?xml version="1.0" encoding="utf-8"?>
      <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >  
       <item>
            <shape android:shape="rectangle" >
                <solid android:color="@color/list_background" />
            </shape>
        </item>
    
    
        <item
            android:left="10dp"
            android:right="10dp">
            <shape android:shape="rectangle" >
                <solid android:color="@color/divider_color"/>
            </shape>
        </item>
    
            </layer-list>
    

    and in your list view add like this...

    <ListView
        android:dividerHeight="2dp"
        android:divider="@drawable/list_divider"
        ...
    />
    
    0 讨论(0)
  • 2020-12-07 11:13

    As @Giulio Piancastelli mentioned under @ASP answer, the <inset> fails when the background colour of the list container is not the same as the rows inside the list. One solution is to use <layer-list> like below:

    //This item is to overlay the container colour with the row background colour
    <item
        android:left="0dp"
        android:right="0dp">
        <shape android:shape="rectangle" >
            <solid android:color="@color/row_background" />
        </shape>
    </item>
    
    //This item is the divider, put it at bottom so it will overlay the background colour
    <item
        android:left="92dp"
        android:right="0dp">
        <shape android:shape="rectangle" >
            <solid android:color="@color/divider
        </shape>
    </item>
    

    Then you can set it as divider as most answers suggest:

    <ListView
        android:dividerHeight="2dp"
        android:divider="@drawable/layer_list"
        ...
    />
    
    0 讨论(0)
提交回复
热议问题