ViewPagerIndicator Registerkarten: Symbole über Text

8

Ich verwende den ViewPagerIndicator und ich möchte den Tab-Stil ändern, so dass ich Symbole über dem Text anstelle des Standards erhalten konnte, der das Symbol auf der linken Seite und den Titel auf der rechten Seite platziert.

    
Pabloku 06.02.2013, 17:34
quelle

3 Antworten

13

Der Grund, warum die Symbole immer auf der linken Seite erscheinen, liegt an diesem Code:

%Vor%

gefunden in TabPageIndicator.java

Dies ist Teil einer privaten Methode ( addTab() ) und kann daher nicht geändert werden, ohne die Bibliothek selbst zu ändern.

Zum Glück ist das nicht schwer zu tun. Stellen Sie sicher, dass Sie den ViewPagerIndicator Quellcode heruntergeladen haben, und öffnen Sie dann TabPageIndicator.java

Wenn Sie den Speicherort permanent ändern möchten (so dauerhaft, wie Sie es bei einer Änderung des Quellcodes erhalten können), ändern Sie den Speicherort von iconResId in setCompoundDrawablesWithIntrinsicBounds () -Methode. Wenn Sie beispielsweise die Symbole oben platzieren möchten, muss iconResId das zweite Argument der Methode sein.

%Vor%

Wenn Sie etwas flexibler brauchen, habe ich diese Änderungen (immer noch in TabPageIndicator.java ) gefunden, die funktionieren sollten. Diese Änderungen wurden auf meinem GitHub gespiegelt, also gibt es ein funktionierendes Beispiel.

Mitgliedsvariablen:

%Vor%

Fügen Sie diese Methode hinzu:

%Vor%

In addTab() , ändern

%Vor%

bis

%Vor%

Implementierung ohne Bibliothek (entnommen aus dem mitgelieferten Beispielcode)

%Vor%     
A--C 28.05.2013 22:20
quelle
8

Sie können diesen Effekt erzielen, indem Sie nur eine Zeile im Quellcode der ViewPageIndicator-Bibliothek ändern.

Die zu ändernde Zeile befindet sich in der 180 -Klasse in der TabPageIndicator -Klasse innerhalb der addTab -Methode (zumindest in der heutigen Version des Codes 28.05.2013)

Die Originaldatei ist

%Vor%

Sie sollten es wie folgt ändern, wenn das Symbol über den Text gehen soll.

%Vor%

Hier ist ein Screenshot der Änderung

Wie Sie wahrscheinlich schon erraten haben, können Sie das Symbol irgendwo um den Text setzen, indem Sie mit der iconResId innerhalb der verschiedenen Argumente der Methode setCompoundDrawablesWithIntrinsicBounds spielen.

    
Robert Estivill 28.05.2013 22:19
quelle
0

Es gibt eine sauberere Möglichkeit, dies zu tun, ohne die Bibliothek zu ändern. Kopieren Sie einfach die Klasse TabPageIndicator in Ihr Projekt und ändern Sie die in den anderen Antworten angegebenen Zeilen. Benenne die Klasse dann in was auch immer du willst und benutze sie, als wäre es ein TabPageIndicator .

    
Romain Piel 09.01.2014 16:34
quelle