2013-04-24 5 views
5

Ich habe eine erweiterbare Listenansicht mit Gruppenanzeige angezeigt rechte Seite der Liste verwenden, in dieser i Titelnamen habe, ist einzelne Linie meiner Ausgabe wie dieserweiterbar Listview Indikator Anzeige Titel Höhe?

enter image description here

in der oberen Bild, meine Anzeige gut aussieht. in der unten stehenden Bild meiner Anzeige nicht gut aussehendes es zu erweitern, warum

mein Code dies geschieht

enter image description here

hier ist

mExpandableList = (ExpandableListView)findViewById(R.id.expandable_list); 
    mExpandableList.setIndicatorBounds(width - GetPixelFromDips(40), width - GetPixelFromDips(10)); 

xml ist

 <ExpandableListView 
    android:id="@+id/expandable_list"   
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:groupIndicator="@drawable/group_indicator" /> 

group_indicator.xml

ist
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item 
     android:drawable="@drawable/arrow_down"  android:state_expanded="true"/> 
    <item android:drawable="@drawable/arrow_up"/> 
</selector> 

Jeder habe Idee Hilfe dieses ........

+0

Welches Layout verwenden Sie für Gruppenelemente? – AlexBcn

+0

@AlexBcn linearlayout ......... – NagarjunaReddy

Antwort

0

die Ansicht Schauen Sie, dass Ihr auf Ihrem custom_group_layout.xml verwenden, wenn Sie es auf Ihrem getGroupView() Ihrer adapterClass aufzublasen. Die Ansicht Ihres Indikators hat möglicherweise einen fill_parent und deshalb streckt Ihr Element sein Symbol, wenn Sie mehrere Textzeilen gruppieren.

An example

2

ich dieses Problem löse komplexe Art und Weise, aber es funktioniert:

Fragment der Layout-Datei mit erweiterbarer Liste:

<ExpandableListView 
    android:id="@+id/accordion" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:groupIndicator="@android:color/transparent" 
    android:scrollbars="none" > 
</ExpandableListView> 

Layout für die Liste Gruppenelement

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/accordion_main_background" 
    android:minHeight="50dip" 
    android:orientation="vertical" 
    android:padding="@dimen/screenPromoTaskRootPadding" > 

    <TextView 
     android:id="@+id/accordionTitle" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_marginRight="10dip" 
     android:layout_toLeftOf="@+id/accordionIndicator" 
     android:background="@color/accordionOrangeBackColor" 
     android:paddingLeft="2dip" 
     android:paddingRight="2dip" 
     android:textColor="@color/blackTextColor" 
     android:textSize="@dimen/accordMainTextSize" /> 

    <ImageView 
     android:id="@+id/accordionIndicator" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" 
     android:src="@drawable/arrow_up_np" /> 

</RelativeLayout> 

und in Aktivität. adaptedDataCollection war nur eine Liste, die Daten für ExpandableListAdapter enthält. Es ist auch ein Fragment der Implementierung von Akkordeon, so dass die Listengruppe andere Elemente nach der Auswahl kollabiert.

ExpandableListView accordion = (ExpandableListView) findViewById(R.id.accordion); 
accordion.setOnGroupClickListener(this); 

@Override 
public boolean onGroupClick(ExpandableListView paramExpandableListView, View paramView, int paramInt, long paramLong) { 
    ImageView icon=(ImageView)paramView.findViewById(R.id.accordionIndicator); 
    for (int i = 0; i < adapterDataCollection.size(); i++) { 
     if (i == paramInt) { 
      if (paramExpandableListView.isGroupExpanded(i)) { 
       paramExpandableListView.collapseGroup(i); 
       icon.setImageResource(R.drawable.arrow_up_np); 
      } else { 
       paramExpandableListView.expandGroup(i); 
       icon.setImageResource(R.drawable.arrow_down_np); 
      } 
     } else { 
      paramExpandableListView.collapseGroup(i); 
      icon.setImageResource(R.drawable.arrow_up_np); 
     } 
    } 
    paramExpandableListView.invalidate(); 
    return true; 
} 
1

können Sie Indikator Höhe von [layer-Liste] http://developer.android.com/guide/topics/resources/drawable-resource.html#LayerList

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:bottom="2dp" 
     android:drawable="@drawable/shrink" 
     android:top="2dp"/> 

</layer-list> 

Selektor

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:drawable="@drawable/layer_shrink" android:state_expanded="true"/> 
1

setzen Sie 9 Patch-Bild für Pfeil verwenden soll. Sie können das folgende Bild anzeigen.

right_arrow_9_patch_image

und für Abwärtspfeil Sie unter Bild

down_arrow_9_patch_image

Don`t your_image_name.9 vergessen können anhängen "0,9" auf dem Bildnamen wie " .png "