web-dev-qa-db-fra.com

Android: masquer les séparateurs enfants dans ExpandableListView

Je dois supprimer complètement les diviseurs de ExpandableListView. En ce qui concerne les éléments parents, c’est une méthode setDividerHeight où je peux passer une valeur nulle. Mais il n'y a pas de méthode similaire pour l'enfant diviseur. Y a-t-il un moyen de le cacher? 

38
Alexander Oleynikov

Si vous souhaitez supprimer complètement les séparateurs de ExpandableListView, setDividerHeight convient pour les éléments parent et enfant. Le séparateur enfant sera dessiné à la même hauteur que le séparateur normal ou défini par setDividerHeight()

Et j'utilise un moyen de contourner l'un pour l'autre pour masquer un élément et afficher l'autre, il suffit de définir le séparateur et les éléments de la même couleur, comme ci-dessous:

 ExpandableListView expView = getExpandableListView();
 expView.setGroupIndicator(null);
 expView.setChildIndicator(null);
 expView.setChildDivider(getResources().getDrawable(R.color.greywhite));        
 expView.setDivider(getResources().getDrawable(R.color.white));
 expView.setDividerHeight(2);

setDividerHeight doit être inférieur à setChildDivider et setDivider, sinon la hauteur sera 0.

En attente de plus de réponses ...

47
user393472

masquer le séparateur enfant lui donner une couleur transparente # 00000000

définir transparent dans votre fichier color.xml

<color name="transparent">#00000000</color>

puis définissez le séparateur enfant

listView.setChildDivider(getResources().getDrawable(R.color.transparent))

ou dans le fichier XML de mise en page

<ExpandableListView 
Android:layout_width="fill_parent"
Android:layout_height="fill_parent" 
Android:childDivider="#00000000"/>
24
David-mu

Vous pouvez utiliser l'attribut 

<ExpandableListView 
    Android:id="@+id/interestlvExp"
    Android:layout_height="wrap_content"
    Android:layout_width="match_parent"
    Android:divider="@null">
</ExpandableListView>

Mais cela supprimera également le séparateur de liste de groupe.

2
Ishan Khanduja

Si vous souhaitez supprimer uniquement le séparateur enfant, vous pouvez créer un dessin pouvant être dessiné avec la même couleur que la couleur d'arrière-plan enfant. Puis définissez-le comme séparateur de votre enfant.

ShapeDrawable sd1 = new ShapeDrawable(new RectShape()); sd1.getPaint().setColor(YOUR CHILD ITEM BACKGROUND COLOR); mExpListView.setChildDivider(sd1);

1
Amit

au lieu d'écrire un code long, utilisez la propriété ExpandableListView. Cela fonctionnera: -

Android:childDivider="@Android:color/transparent" 
1
Mr.Moudgil

Définissez la hauteur de séparation de votre expandableListView sur 0

//setDividerHeight(0)

Et puis ajoutez une vue au bas de votre headerView xml

<View
        Android:layout_width="match_parent"
        Android:layout_height="1dp"
        Android:layout_gravity="bottom"
        Android:background="@Android:color/darker_gray"
        />
0
Lilo