2012-08-27 17 views
18

Según entiendo, el divisor definido para una vista de lista también debe aparecer en la parte superior e inferior de la lista, es decir, encima del primer elemento y debajo del último.Los separadores superior e inferior no se muestran en la lista de Android

Por alguna razón que no aparecen en mi vista de lista:

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

androide Marco: footerDividersEnabled a verdadero (que es la respuesta dada en otras preguntas en torno a esa materia) no cambia nada. Además, no tengo elementos deshabilitados, a menos que de alguna manera haya un pie de página predeterminado que esté deshabilitado.

¿Alguna idea?

Editar: Parece que el divisor en los divisores superior e inferior aparece por una fracción de segundo cuando me desplazo más allá del primer/último elemento, y luego desaparece. Parece que la interfaz continuará, solo más tarde para darse cuenta de que fue el último elemento y luego deshabilitar el divisor.

Respuesta

0

Creo que tiene que establecer el pie de página usando una vista debajo de la vista de lista. que tenía el mismo problema y esto es lo que yo pudiera llegar como una solución:

Show divider after the last item in the list

+0

Gracias por la respuesta, lamentablemente eso no funciona para mí. Primero, la vista solo muestra si hay otro elemento debajo de él (no sé por qué), y segundo, incluso cuando se muestra, permanece siempre visible en la parte inferior de la pantalla. El efecto que intento alcanzar es que el divisor solo aparece al final de la lista, como si se desplazara con él. – InterRaptor

+0

¿lo has probado? porque funciona de la manera que quería –

+0

Lo probé, copié el código en la respuesta aceptada (reemplazando el ID de la lista) justo debajo de la vista de lista. Luego obtengo una línea verde en la parte inferior de la pantalla, incluso cuando todavía hay muchos elementos de la lista para desplazar. – InterRaptor

0

Por favor, encontrar el código modificado a continuación:

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

Supongo que agregó el LinearLayout para poder usar el peso. Buena idea, pero no hubo suerte, todavía no aparece ningún divisor en la parte superior o inferior de la lista. – InterRaptor

4

que tenía el mismo problema. He aquí cómo lo resolví:

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

Luego, en el método onCreate(), que tengo:

View v = new View(this); 
v.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 1)); 
mList.addFooterView(v); 
28

He resuelto este problema mediante la ayuda del siguiente enlace: Divider disappears from last item in listview if footerview added

Lo que hizo fue agregar el

android:footerDividersEnabled="true" 

atributo para el ListView en XML. A continuación, mediante programación, añadí una vista pie de página vacía que era seleccionable mediante

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

Yo no probar la cabecera, pero espero que funcione de la misma manera.

+0

Para mí, el divisor solo aparece si el pie de página está marcado como seleccionable, es decir, que el parámetro final de 'addFooterView' es' true'. Establecerlo en 'false' no muestra el divisor. – nickgrim

-2

Tuve el mismo problema, y ​​el ajuste del relleno y el color de fondo lo resolvió.

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

Aquí, el color de fondo debe coincidir con el del divisor con la vista de lista.

+0

Esta solución no desaparece cuando se desplaza – Hrk

Cuestiones relacionadas