Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Margin on ListView items in android

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 line between each item.

What I really would like is to have rounded corners on each item, a 1px black border and a 3-5px margin left, top, and right but right now I'll settle for just a margin around each item :-)

How do I achieve my goals? Just the margin for now... ;-)

Here's what I have:

UPDATE: I have updated the xml below removing main layout and fragment layout. I have also updated the ListView item layout to what I have now which is closer to what I want but still not perfect. Screenshot added as well

listview item layout xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingLeft="@dimen/matchMargin" android:paddingRight="@dimen/matchMargin" android:paddingTop="@dimen/matchMargin" >  <RelativeLayout     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:background="#cfcfcfcf" >      <include         android:id="@+id/matchKampstart"         layout="@layout/kampstart_layout" />      <LinearLayout         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_below="@id/matchKampstart"         android:layout_marginTop="@dimen/belowKampstartMargin" >          <ImageView             android:id="@+id/tournamentImageView"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:layout_gravity="center_vertical"             android:layout_marginRight="2dp"             android:adjustViewBounds="true"             android:contentDescription="@string/tournamentImageViewContentDescription"             android:gravity="left"             android:src="@drawable/sofabold_launcher" />          <ImageView             android:id="@+id/homeTeamImageView"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:layout_gravity="center_vertical"             android:layout_marginRight="2dp"             android:adjustViewBounds="true"             android:contentDescription="@string/homeTeamImageViewContentDescription"             android:src="@drawable/sofabold_launcher" />          <TextView             android:id="@+id/homeTeam"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:layout_gravity="center_vertical"             android:layout_marginRight="2dp"             android:text="@string/home"             android:textSize="14sp"             android:textStyle="bold" />          <TextView             android:id="@+id/dash"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:layout_gravity="center_vertical"             android:layout_marginRight="2dp"             android:gravity="center"             android:text="@string/dash"             android:textSize="12sp"             android:textStyle="bold" />          <ImageView             android:id="@+id/awayTeamImageView"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:layout_gravity="center_vertical"             android:layout_marginRight="2dp"             android:adjustViewBounds="true"             android:contentDescription="@string/awayTeamImageViewContentDescription"             android:src="@drawable/sofabold_launcher" />          <TextView             android:id="@+id/awayTeam"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:layout_gravity="center_vertical"             android:gravity="center"             android:text="@string/away"             android:textSize="14sp"             android:textStyle="bold" />     </LinearLayout>      <LinearLayout         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_alignParentRight="true"         android:layout_below="@id/matchKampstart"         android:layout_marginTop="@dimen/belowKampstartMargin" >          <ImageView             android:id="@+id/tvChannelImageView"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:adjustViewBounds="false"             android:contentDescription="@string/tvChannelImageViewContentDescription"             android:gravity="right"             android:src="@drawable/sofabold_launcher" />     </LinearLayout>  </RelativeLayout>  </RelativeLayout> 

This gives me the following where you'll notice a very small line to the right and left for each item. That I would also like to get rid of.

enter image description here

like image 962
CJe Avatar asked Mar 11 '13 15:03

CJe


1 Answers

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.

like image 152
Sam Avatar answered Sep 19 '22 04:09

Sam