Android: Wie ändere ich die Position des ExpandableListView Indikators?

8

Ich möchte die Position des Standardpfeils ändern, der in der Gruppenansicht der ExpandableListView angezeigt wird. Ich möchte, dass es auf der rechten Seite ist, anstatt auf der linken Seite zu sein.

Wie kann das gemacht werden?

    
Mina Samy 27.02.2011, 10:37
quelle

4 Antworten

9

Verwenden Sie setIndicatorBounds :

  

Legt die Zeichenbegrenzungen für die Indikatoren fest (mindestens die Gruppe   Indikator ist davon betroffen; der Kind-Indikator ist davon betroffen   Wenn die untergeordneten Indikatorgrenzen auf vererben gesetzt sind).

    
jfs 06.02.2012, 08:22
quelle
29

Eigentlich gibt es einen einfachen Weg.

  1. Bearbeiten Sie Ihr mit der Gruppenansicht in Beziehung stehendes XML wie folgt:

    %Vor%

    Sehen Sie, wie ImageView rechts von TextView ist.

  2. Bearbeiten Sie Ihre ExpandableListAdapter wie folgt:

    %Vor%

    Wie Sie sehen können, können Sie das Zeichen, das dem Gruppenstatus entspricht, leicht setzen.

Ich weiß, dass die Frage schon vor langer Zeit gestellt wurde, aber das könnte jemandem helfen.

    
Benoit Duffez 31.01.2012 23:12
quelle
5

Versuchen Sie es

%Vor%

Und das GetDipsFromPixel ist hier

%Vor%     
jhon 28.11.2012 12:21
quelle
-3

Es gibt keinen direkten Weg, dies zu tun.

mIndicatorLeft und mIndicatorRight sind die beiden Felder in der ExpandableListView-Klasse, die die Position des Indikatorsymbols behandeln, und sie sind private Felder. Leider ist die Position des Indikators nicht wie erwartet in einem ordentlich definierten Layout festgelegt, sondern wird in dispandDraw () in ExpandableListView bestimmt. Ein Rechteck wird mit den Werten top / bottom und mIndicatorRight und mIndicatorLeft gezeichnet. In diesem Rect wird das Indikatorsymbol gezeichnet. Sie müssen die Position dieses Rect-Objekts mit dem Namen 'indicatorRect' ändern, um das Indikatorsymbol zu verschieben.

Um eine Vorstellung von den Dingen zu bekommen, können Sie dieses Beispiel sehen Ссылка Ändern Sie den Wert von textView padding in getGenericView () im Beispiel auf 0, Sie werden sehen, dass der Indikator den Text überlappen wird.

Ihre einzige Option besteht darin, den Quellcode von ExpandableListView abzurufen und diese mIndicatorRight- und mIndicatorLeft-Werte selbst festzulegen, indem Sie mIndicatorRight als item.getRight () und mIndicatorLeft als item.getRight () - 'Ihre Symbolgröße' festlegen.

    
Veeresh 27.02.2011 18:32
quelle

Tags und Links