2012-08-27 11 views
18

Per come la capisco, il divisore definito per un listview dovrebbe apparire anche in cima e in fondo all'elenco, cioè sopra il primo elemento e sotto l'ultimo elemento.I divisori superiore e inferiore non vengono visualizzati nella vista list Android.

Per qualche motivo non compaiono nella mia 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> 

Impostazione Android: footerDividersEnabled true (che è la risposta data in altre questioni intorno a questo) non cambia nulla. Inoltre non ho elementi disabilitati, a meno che non ci sia in qualche modo un footer predefinito che sarebbe disabilitato.

Qualche idea?

Modifica: Sembra che il divisore sui divisori superiore e inferiore appaia per una frazione di secondo quando si scorre oltre il primo/ultimo elemento e quindi scompare. Sembra che l'interfaccia continui, solo più tardi per rendersi conto che era l'ultimo elemento e quindi disabilitare il divisore.

risposta

0

Penso che sia necessario impostare il piè di pagina utilizzando una vista sotto il listview. Ho avuto lo stesso problema e questo è quello che ho potuto ottenere come soluzione:

Show divider after the last item in the list

+0

Grazie per la risposta, purtroppo questo non funziona per me. Innanzitutto, la vista mostra solo se c'è un altro elemento sottostante (non so perché), e in secondo luogo anche quando viene mostrato, rimane sempre visibile nella parte inferiore dello schermo. L'effetto che sto cercando di raggiungere è che il divisore appare solo alla fine della lista, come se si sposasse con esso. – InterRaptor

+0

lo hai provato ?? perché funziona nel modo desiderato –

+0

L'ho provato, copiato il codice nella risposta accettata (sostituendo l'id listview) appena sotto la listview. Quindi ottengo una linea verde nella parte inferiore dello schermo anche quando ci sono molte voci di elenco ancora da scorrere. – InterRaptor

0

Si prega di trovare il codice modificato di seguito:

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

Immagino che tu abbia aggiunto LinearLayout per poter usare il peso. Buona idea, ma senza fortuna, ancora nessun divisore appare in cima o in fondo alla lista. – InterRaptor

4

Ho avuto lo stesso problema. Ecco come ho risolto:

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

Poi, nel metodo onCreate(), ho:

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

Ho risolto questo problema utilizzando l'aiuto dal seguente link: Divider disappears from last item in listview if footerview added

Quello che ho è stato aggiunto

android:footerDividersEnabled="true" 

attributo a ListView in XML. Poi programatically, ho aggiunto una vista piè di pagina vuota che è stata selezionata tramite

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

Non ho provato l'intestazione, ma mi aspetto che funzioni allo stesso modo.

+0

Per me, il divisore appare solo se il piè di pagina è contrassegnato come selezionabile, cioè che il parametro finale di 'addFooterView' è' true'. Impostandolo su 'false' non viene mostrato il divisore. – nickgrim

-2

Ho avuto lo stesso problema e l'impostazione del riempimento e del colore di sfondo l'ha risolto.

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

Qui, colore di sfondo dovrebbe essere lo stesso con quella del divisorio con l'ListView.

+0

Questa soluzione non scompare quando si scorre – Hrk