Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Top and bottom dividers not showing in Android listview

The way I understand it, the divider defined for a listview should appear at the top and bottom of the list too, i.e. above the first item and under the last item.

For some reason they don't appear in my listview:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLayout"
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="@drawable/background">

<ImageView
    android:id="@+id/home"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingLeft="3dp"
    android:paddingTop="3dp"
    android:paddingBottom="3dp"
    android:src="@drawable/homeicon"/>

<TextView
    android:id="@+id/titleBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Page Title" 
    android:layout_marginLeft="10dp" 
    android:paddingTop="3dp"
    android:textSize="18sp" 
    android:textStyle="bold" 
    android:typeface="serif" 
    android:textColor="#FFFFFF"
    android:layout_centerHorizontal="true"/>

<ImageView
    android:id="@+id/back"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingRight="8dp"
    android:paddingTop="8dp"
    android:src="@drawable/backicon" 
    android:layout_alignParentRight="true"/>


<ImageView
    android:id="@+id/separator1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/home"
    android:scaleType="fitXY"
    android:src="@drawable/separatorimg" />


<ListView
    android:id="@android:id/android:list" 
    android:layout_below="@+id/separator1"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:cacheColorHint="#00000000"
    android:divider="@drawable/separatorimg">
</ListView>

</RelativeLayout>

Setting android:footerDividersEnabled to true (which is the answer given in other questions around that matter) doesn't change anything. Also I have no disabled items, unless there is somehow a default footer that would be disabled.

Any ideas?

Edit: It seems the divider at the top and bottom dividers appear for a split second when I scroll past the first/last item, and then disappears. It looks as if interface was going to continue, only later to realize that was the last item and then disable the divider.

like image 517
InterRaptor Avatar asked Aug 27 '12 09:08

InterRaptor


2 Answers

I solved this problem using help from the following link: Divider disappears from last item in listview if footerview added

What I did was add the

  android:footerDividersEnabled="true" 

attribute to the ListView in XML. Then programatically, I added an empty footer view that was selectable using

 listView.addFooterView(new View(context), null, true);

I didn't try the header, but I expect it to work the same way.

like image 151
k3v Avatar answered Oct 12 '22 07:10

k3v


I had the same problem. Here's how I solved it:

<ListView
    android:id="@+id/my_list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:divider="@color/transparent"
    android:dividerHeight="@dimen/padding_default"
    android:footerDividersEnabled="false"
    android:headerDividersEnabled="false" >
</ListView>

Then, in the onCreate() method, I have:

View v = new View(this);
v.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 1));
mList.addFooterView(v);
like image 37
Mugur Avatar answered Oct 12 '22 06:10

Mugur