Margin on ListView items in android

后端 未结 5 567
闹比i
闹比i 2020-12-08 06:53

I\'m trying (in vain) to add margins to my ListView items. I have tried adding margin values to my RelativeLayout below but no matter what I do all I seem to get is a 1px li

相关标签:
5条回答
  • 2020-12-08 07:38

    I'm not great with layouts, but I have noticed in the past that ListView rows often ignore LayoutParams. I have no idea where this happens or if it's possible to override, I do know you can easily work around it by adding another layout:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="?android:attr/listPreferredItemHeight"
        android:background="#990000ff" >
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginRight="10dp"
            android:layout_marginTop="10dp"
            android:background="#9900ff00"
            android:paddingLeft="10dp" >
    
            <TextView
                android:id="@+id/text"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#99ff0000" />
        </LinearLayout>
    
    </LinearLayout>
    

    Typically layouts that only have one child can be removed, but as you can see this one serves a purpose:

    Screen Shot

    The outer-most layout is blue, the TextView is red, and the green is the extra layout that allows you to add some extra spacing. Notice the difference between padding (the green on the left) and margin (no green on the right). You have clearly stated that you want to use margins (android:layout_margin) but your code clearly uses padding (android:padding) so I included both.

    0 讨论(0)
  • 2020-12-08 07:39

    A little late seeing this, but just add the following lines to your ListView xml element

    android:divider="#00000000"
    android:dividerHeight="10dp"
    
    0 讨论(0)
  • 2020-12-08 07:54

    In your adapter, catch your relative layout in getView(), then give a layout params ,

    RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)view.getLayoutParams();
    params.setMargins(80, 0, 0, 0); //substitute parameters for left, top, right, bottom
    YourRelativeLayoutInAdapter.setLayoutParams(params);
    
    0 讨论(0)
  • 2020-12-08 07:59

    I suppose you have a ListView defined in an XML file somewhere, if so, you could add some padding to it, so that there will be some space between the edge of the screen and the ListView.

    Example:

    <ListView
        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:padding="15dp"/>
    
    0 讨论(0)
  • 2020-12-08 08:00

    See the answer here for why. In short the child asks the parent, and the list view row uses AbsListView.LayoutParams, which doesn't include margins.

    Why LinearLayout's margin is being ignored if used as ListView row view

    0 讨论(0)
提交回复
热议问题