Верхний и нижний разделители не отображаются в списке Android

Насколько я понимаю, разделитель, определенный для списка, должен отображаться также вверху и внизу списка, то есть над первым элементом и под последним элементом.

По какой-то причине они не отображаются в моем списке:

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

Установка для android:footerDividersEnabled значения true (что является ответом на другие вопросы по этому вопросу) ничего не меняет. Также у меня нет отключенных элементов, если только нижний колонтитул по умолчанию не отключен.

Любые идеи?

Изменить: кажется, что разделитель вверху и внизу появляется на долю секунды, когда я прокручиваю первый/последний элемент, а затем исчезает. Похоже, что интерфейс будет продолжаться, но позже он поймет, что это был последний элемент, а затем отключит разделитель.


person InterRaptor    schedule 27.08.2012    source источник


Ответы (5)


Я решил эту проблему, используя справку по следующей ссылке: Divider исчезает из последнего элемента в списке, если добавлен нижний колонтитул

Что я сделал, так это добавил

  android:footerDividersEnabled="true" 

атрибут ListView в XML. Затем программно я добавил пустой вид нижнего колонтитула, который можно было выбрать с помощью

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

Я не пробовал заголовок, но я ожидаю, что он будет работать так же.

person k3v    schedule 26.07.2013
comment
Для меня разделитель появляется только в том случае, если нижний колонтитул помечен как выбираемый, то есть последний параметр для addFooterView равен true. Установка его на false не показывает разделитель. - person nickgrim; 11.01.2016

У меня такая же проблема. Вот как я решил это:

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

Затем в методе onCreate() у меня есть:

View v = new View(this);
v.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 1));
mList.addFooterView(v);
person Mugur    schedule 25.04.2013

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

Показать разделитель после последнего элемента в списке< /а>

person Archie.bpgc    schedule 27.08.2012
comment
Спасибо за ответ, к сожалению, это не работает для меня. Во-первых, вид отображается только в том случае, если под ним есть другой элемент (не знаю почему), а во-вторых, даже когда он отображается, он всегда остается видимым внизу экрана. Эффект, которого я пытаюсь достичь, заключается в том, что разделитель появляется только в конце списка, как будто он прокручивается вместе с ним. - person InterRaptor; 28.08.2012
comment
Я попробовал, скопировал код в принятом ответе (заменив идентификатор списка) чуть ниже списка. Затем я получаю зеленую линию внизу экрана, даже если есть много элементов списка, которые нужно прокрутить. - person InterRaptor; 28.08.2012
comment
Хорошо, у меня был какой-то пользовательский макет, с которым он работает так, как вы хотели. Но я просто скопировал ваш код и попробовал, он работает так, как вы хотели. единственное, что верхний и нижний разделители не будут отображаться, если вы не попытаетесь прокрутить вниз даже после последнего элемента - person Archie.bpgc; 28.08.2012
comment
Вы имеете в виду, что мой код работает как есть (за исключением отображения только при попытке прокрутки) или решение вашего вопроса работает с моим кодом? Потому что я даже не вижу зеленой линии, если не определяю высоту (например, 300dp) вместо wrap_content. - person InterRaptor; 28.08.2012

Пожалуйста, найдите измененный код ниже:

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

<LinearLayout
    android:id="@+id/llAppBar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:orientation="horizontal"
    android:weightSum="10" >

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

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

    <ImageView
        android:id="@+id/back"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:paddingRight="8dp"
        android:paddingTop="8dp"
        android:scaleType="fitXY"
        android:src="@drawable/backicon" />
</LinearLayout>

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

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

</RelativeLayout>
person Eldhose M Babu    schedule 27.08.2012
comment
Я думаю, вы добавили LinearLayout, чтобы иметь возможность использовать вес. Хорошая идея, но не повезло, разделитель по-прежнему не появляется вверху или внизу списка. - person InterRaptor; 28.08.2012

У меня была та же проблема, и установка отступов и цвета фона решила ее.

<ListView
    android:id="@+id/list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/gray_background"
    android:paddingTop="1dp"
    android:paddingBottom="1dp"        
/> 

Здесь цвет фона должен быть таким же, как у разделителя в списке.

person tomoima525    schedule 12.06.2015
comment
Это решение не исчезает при прокрутке - person Hrk; 05.08.2015