2012-08-27 12 views
5

sto avendo il seguente ExpandableListView:ExpandableListView Android divisore è invisibile

<ExpandableListView 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:id="@+id/listView" 
      android:groupIndicator="@android:color/transparent" 
      android:background="@color/app_background" 
      android:scrollingCache="false" 
      android:choiceMode="none" 
      android:divider="@color/gray_dark" 
      android:dividerHeight="2dp" 
      android:childDivider="@color/gray_dark" 
      android:cacheColorHint="@color/app_background"/> 

Il problema che ho è che la vista elenco espandibile non assorbe i divisori o almeno non sono visibili .. sto aggiungendo una visualizzazione personalizzata come vista Gruppo e anche voci di elenco personalizzate nel mio adattatore espandibile. Potrebbe essere un problema?

Qualcuno sa cosa posso fare per abilitare i divisori per l'elenco child?

Grazie in anticipo.

+0

Sei "aggiungendo" 'View's personalizzato all'elenco attraverso un' Adapter' o attraverso qualcosa di simile '((ViewGroup) findViewById (R.id.listView)). addView (bambino) '? Se quest'ultimo, non funzionerà come previsto. – user113215

+0

Sto aggiungendo visualizzazioni personalizzate tramite un adattatore – Cata

risposta

13

Sembra che ho avuto un problema sulla mia scheda espandibile .. Ero sovrascritti il ​​seguente metodo:

@Override 
public boolean areAllItemsEnabled() { 
    return true; 
} 

Invece di tornare vero ho lasciato il metodo per restituire falso e questo era il problema ... Quindi, se qualcuno ha questo problema, controlla quel metodo e assicurati che restituisca true e non false false.

Si noti che non è necessario eseguire l'override questo metodo se si estende BaseExpandableListAdapter

+13

Ottimo, questo mi ha infastidito per una buona ora circa :) Per riferimento futuro, ho anche trovato che dovevo restituire true per 'isChildSelectable() ' – sleeke

+1

Sono d'accordo con @sleeke, dovevo sia' areAllItemsEnabled() 'che' isChildSelectable() 'per poter smettere di essere invisibile. –

0

Non ho mai provato a fare confusione con i divisori nell'xml, l'ho sempre fatto attraverso il codice. Di seguito è riportato un frammento che imposta il divisore sul rosso e lo fa sfumare mentre si sposta dal centro ai bordi. C'è solo una chiamata di altezza del divisore poiché quella parte influisce sia sul gruppo che sul bambino.

import android.graphics.drawable.GradientDrawable; 
import android.graphics.drawable.GradientDrawable.Orientation; 

// code to set up expandablelistview 

int[] colors = {0, 0xFFFF0000, 0}; // red for the example 
getListView().setDivider(new GradientDrawable(Orientation.RIGHT_LEFT, colors)); 
getListView().setChildDivider(new GradientDrawable(Orientation.RIGHT_LEFT, colors)); 
getListView().setDividerHeight(4); 
+0

Hmm, ok proverò a farlo in codice, anche se sarebbe stato meglio se ci fosse un modo per farlo in xml ... Ci proverò domani e vedrò – Cata

+0

sembra che non funzioni per me ... grazie però – Cata