2013-04-24 14 views
5

Ho utilizzando un ListView espandibile con indicatore di gruppo visualizzare lato destro della lista, in questo ho nome del titolo è la mia sola riga output come questoindicatore espandibile visualizzazione listview altezza del titolo?

enter image description here

immagine qui sopra nel mio indicatore è un bell'aspetto. nell'immagine qui sotto il mio indicatore cercando non va bene espandersi, perché questo accada

enter image description here

Ecco il mio codice

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

XML è

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

group_indicator.xml è

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

Nessuno ha idea di aiuto questo ........

+0

Quale layout stai utilizzando per gli articoli del gruppo? – AlexBcn

+0

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

risposta

0

Guardate l'opinione che si sta usando sul custom_group_layout.xml quando si gonfia sul vostro getGroupView() del vostro adapterClass. La vista del tuo indicatore potrebbe avere un carattere_parente ed è per questo che il tuo oggetto sta allungando la sua icona quando il tuo gruppo contiene più righe di testo.

An example

2

posso risolvere questo problema modo più complesso, ma funziona:

Frammento di file di layout con la lista espandibile:

<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 per l'elemento di gruppo Lista

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

e in Attività. modifiedDataCollection era solo una lista che contiene dati per ExpandableListAdapter. Inoltre è frammento dell'implementazione di Accordion in modo che il gruppo di elenchi comprima altri elementi dopo uno selezionato.

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

è possibile impostare l'altezza indicatore da [strato-list] 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> 

selettore

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

Si dovrebbe usare immagine 9 patch per freccia. È possibile fare riferimento all'immagine qui sotto.

right_arrow_9_patch_image

e freccia giù è possibile utilizzare sotto immagine

down_arrow_9_patch_image

Non dimenticare per aggiungere ".9" al nome dell'immagine come " your_image_name.9 .png "