Sto usando lo ViewPagerIndicator e vorrei modificare lo stile della scheda in modo da ottenere le icone sopra il testo, anziché l'impostazione predefinita, che posiziona l'icona sul lato sinistro e il titolo a destra.Schede ViewPagerIndicator: Icone sopra Testo
risposta
È possibile ottenere questo effetto modificando solo 1 riga nel codice sorgente della libreria ViewPageIndicator.
La linea da modificare è nel numero 180
nella classe TabPageIndicator
all'interno del metodo addTab
(almeno nella versione attuale del codice 28/05/2013)
Il file originale è
180 tabView.setCompoundDrawablesWithIntrinsicBounds(iconResId, 0, 0, 0);
E dovresti modificarlo come segue se vuoi che l'icona vada sopra il testo.
180 tabView.setCompoundDrawablesWithIntrinsicBounds(0, iconResId, 0, 0);
Ecco uno screenshot del cambiamento
Come probabilmente avete indovinato, ormai, si può mettere l'icona di qualsiasi parte del testo di giocare con l'iconResId all'interno dei diversi argomenti della setCompoundDrawablesWithIntrinsicBounds
metodo.
Robert, ho appena assegnato tutti i punti ad A - C. Pensavo di poter dividere il punto su più risposte, ma apparentemente non il modo in cui ho creato la taglia. Scusate! La tua risposta * è * apprezzata, tuttavia! –
Il motivo per cui le icone appaiono sempre sulla sinistra è a causa di questo pezzo di codice:
if (iconResId != 0) {
tabView.setCompoundDrawablesWithIntrinsicBounds(iconResId, 0, 0, 0);
}
trovano in TabPageIndicator.java
Questo fa parte di un metodo privato (addTab()
), e così, non può essere modificato senza modificare la libreria stessa.
Fortunatamente, questo non è troppo difficile da fare. Assicurarsi di avere il codice ViewPagerIndicator
fonte scaricato, quindi aprire TabPageIndicator.java
Se si desidera cambiare la posizione in modo permanente (come permanente come si può ottenere con una modifica del codice sorgente), modificare la posizione del iconResId
nel metodo setCompoundDrawablesWithIntrinsicBounds() . Ad esempio, posizionando le icone in alto è necessario il iconResId
per essere il secondo argomento del metodo.
tabView.setCompoundDrawablesWithIntrinsicBounds(0, iconResId, 0, 0);
Se avete bisogno di qualcosa di un po 'più flessibile, mi si avvicinò con questi cambiamenti (ancora in TabPageIndicator.java
) che dovrebbero funzionare. Queste modifiche sono state replicate on my GitHub, quindi c'è un esempio funzionante.
variabili membro:
/**
* Constants to improve readability - no magic numbers.
*/
public final static int LOCATION_LEFT =0;
public final static int LOCATION_UP = 1;
public final static int LOCATION_RIGHT = 2;
public final static int LOCATION_BOTTOM =3;
/**
* Stores the location of the tab icon
*/
private int location = LOCATION_LEFT;
/**
* Used to store the icon.
*/
private int [] drawables = new int [4];
/**
* Holds the value used by setCompoundDrawablesWithIntrinsicBounds used to denote no icon.
*/
private static int NO_ICON = 0;
Aggiungi questo metodo:
public void setTabIconLocation (int newLocation){
if (location > LOCATION_BOTTOM || location < LOCATION_LEFT)
throw new IllegalArgumentException ("Invalid location");
this.location = newLocation;
for (int x = 0; x < drawables.length;x++){
drawables [x] = NO_ICON;
}
}
In addTab()
, cambiare
if (iconResId != 0) {
tabView.setCompoundDrawablesWithIntrinsicBounds(iconResId, 0, 0, 0);
}
a
if (iconResId != 0) {
drawables [location] = iconResId;
tabView.setCompoundDrawablesWithIntrinsicBounds(drawables[0], drawables[1], drawables[2], drawables[3]);
}
attuazione non library (tratto dal codice di esempio fornito)
TabPageIndicator indicator = (TabPageIndicator)findViewById(R.id.indicator);
indicator.setTabIconLocation (TabPageIndicator.LOCATION_UP);
indicator.setViewPager(pager);
Grazie per la tua risposta e la copia di lavoro su Github, molto apprezzata! Avevo paura che non fosse possibile attraverso la biblioteca stessa. Ah bene, forse sentirò una richiesta di pull (a meno che non lo farai :)). Di nuovo, grazie. –
Ho appena realizzato che non posso ancora assegnare i punti di taglia (lo posso fare solo dopo 24 ore): li dividerò tra te e Robert quando sarò in grado di farlo. –
@BartKiers Nessun problema :-) Ho apportato alcune piccole modifiche al codice e, una volta verificato che funzioni correttamente, invierò una richiesta di pull. –
C'è un modo più pulito di farlo senza modificare la libreria. Basta copiare e incollare la classe TabPageIndicator nel progetto e modificare le linee evidenziate nelle altre risposte. Quindi rinomina la classe in base alle tue esigenze e usala come se fosse una TabPageIndicator
.
- 1. Come modificare lo sfondo della scheda nelle schede di viewpagerindicator?
- 2. Allinea le icone della scheda di navigazione di ActionBar sopra il testo della scheda?
- 3. Icone del display su FragmentPagerAdapter schede
- 4. ViewPagerIndicator non visualizza il testo del titolo
- 5. ViewPagerIndicator: testo multilinea per il titolo della scheda?
- 6. Android Navigation Drawer sopra le schede
- 7. ViewPagerIndicator ClassNotFoundException?
- 8. Cambia TabPageIndicator footer e colori del testo (ViewPagerIndicator)
- 9. Come unire due icone insieme? (Sovrapporre un'icona sopra l'altro)
- 10. Aggiungi icone di stato sopra icone di file in Explorer, come Dropbox o SVN in .NET
- 11. Icone della barra della scheda centrale senza testo in Swift
- 12. Aggiungi icone a schede adattatore che estende FragmentPagerAdapter
- 13. ViewPagerIndicator - Imposta TabPageIndicator al centro
- 14. schede QTabWidget sulla verticale, ma il testo in orizzontale
- 15. verticalmente allineare Hyphend testo e delle icone
- 16. Come aggiungere testo alle icone in ActionBar?
- 17. Qt QPulsante del pulsante sopra il testo
- 18. Ottieni testo sopra la tabella MS Word
- 19. Come rimuovere il testo sopra JSlider
- 20. Tabs Android senza icone
- 21. Rotazione verticale di schede e testo
- 22. Tablayout con solo icone
- 23. ViewPagerIndicator CirclePageIndicator non può essere istanziato
- 24. Impossibile aggiungere ViewPagerIndicator all'app con Gradle
- 25. Nessuno stile ViewPagerIndicator in combinazione con SherlockActionBar
- 26. Scheda scorrevole di Cercapersone Android con icone
- 27. icone font vs icone png
- 28. ActionBarSherlock - Schede che appaiono SOPRA la barra delle azioni con vista personalizzata
- 29. Testo di stile per farlo apparire sopra la linea (per gli accordi sopra i testi)
- 30. Overlay Icone in Delphi IDE
Ciao, Qualche soluzione per questo problema? – Kid24