2014-02-11 5 views
24

exampleauf rechts die Anzeige eines ExpandableListView in Android

Ich habe die Anzeige von links nach rechts bewegen (wegen des ebenen Bildes). Ich könnte auch nicht erfolgreich sein, weil die expandableviewlist innerhalb eines Fragments und nicht innerhalb einer ganzen Aktivität ist. Irgendeine Idee? Vielen Dank!

+0

redest du über Pfeilbild? –

+0

ja ich rede darüber! – Filnik

+0

Alle XML-Lösung basierend auf Layout: Richtung kann hier gefunden werden: http://StackOverflow.com/A/38079569/4160084 – goodKode

Antwort

96

Ich weiß nicht, einen Weg, das zu tun von XML, aber ich werde Ihnen einen Weg, sage so dynamisch zu tun in deinem Adapter.

Zuerst müssen Sie Gruppenindikatoren aus dem xml

<ExpandableListView [...] 
    android:groupIndicator="@null" /> 

Dann in Ihrem Layout der übergeordneten fügen Sie einen Imageview in der richtigen Position Ihres Layouts zu entfernen.

Dann in Ihrem benutzerdefinierten Adapter gehen Sie wie folgt

public View getGroupView(int groupPosition, boolean isExpanded, 
     View convertView, ViewGroup parent) { 
    ... 

    if (isExpanded) { 
     groupHolder.img.setImageResource(R.drawable.group_down); 
    } else { 
     groupHolder.img.setImageResource(R.drawable.group_up); 
    } 
    ... 

} 
+0

danke! Das hat den Trick :) – Filnik

+0

Danke Mann, Es funktioniert wie ein Charme Jungs, nur implementieren Sie es. –

+0

@Filnik was ist ein 'groupHolder'? ViewGroup Parent oder LayoutInflater oder was ?? – Prabs

-11

In Ihrer groupcustom.xml Datei können Sie Relativelayout verwenden und setzen das Bild zu

android:alignParentRight = "true"; 
+2

Ich muss den Pfeil nach rechts, nicht das Flugzeug! Und der Pfeil ist ein benutzerdefiniertes Symbol der expandableListview .. so kann ich nicht seine Position ändern :( – Filnik

9

Eine weitere Lösung ist: 1) Erster Satz groupIndicator in Ihrem ExpandableListView @null:

<ExpandableListView [...] 
    android:groupIndicator="@null" /> 

2) Dann group_indicator erstellen. XML-Datei mit folgenden Details:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/down_icon" android:state_selected="false"></item> 
    <item android:drawable="@drawable/up_icon" android:state_selected="true"></item> 
    <item android:drawable="@drawable/down_icon"></item> 
</selector> 

3) Th en group_header.xml Layout mit folgenden Details erstellen und dieses Layout in getGroupView() -Methode des ExpandableListAdapter.java aufblasen:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:padding="10dp"> 

    <TextView 
     android:id="@+id/tvHeader" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:textColor="@color/white" 
     android:layout_centerVertical="true" 
     android:textSize="16sp"/> 

    <ImageView 
     android:id="@+id/ivGroupIndicator" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/group_indicator" 
     android:layout_centerVertical="true" 
     android:layout_alignParentRight="true"/> 
</RelativeLayout> 

3) In getGroupView() -Methode Ihrer ExpandableListAdapter.java Klasse, setzen Sie einfach die folgenden:

ivGroupIndicator.setSelected(isExpanded); 

Mit diesem Ansatz funktionieren Ihr down_icon und up_icon ordnungsgemäß. Hoffe, das hilft.

+0

Sie würden nicht zufällig die androide Ressourcendatei für 'down_icon' und' up_icon' kennen, oder? – psycotik