2010-02-18 20 views
5

Ho tre schede nella mia applicazione. Su un evento sotto una scheda, voglio cambiare il titolo di un'altra scheda esistente. Questo è il titolo che forniamo mentre aggiungiamo le schede al TabHost.Come modificare dinamicamente il titolo della scheda

esempio: TabHost.addTab (tabHost.newTabSpec ("Tab2")) setIndicator ("Ho bisogno di essere modificato in modo dinamico") setContent ....

Nell'esempio precedente, il titolo del.. tab2 che ho fornito sotto setIndicator(), dovrebbe essere cambiato dinamicamente.

C'è un modo per realizzare questo.

risposta

3

Invece di impostare l'indicatore come String, utilizzarne uno in cui si imposta View da utilizzare. Quindi, puoi trattenerlo su quello View (ad es. A TextView) e modificarne il contenuto secondo necessità.

7

A meno che non sia possibile trovare un metodo più pulito, è possibile accedere allo stesso TabWidget. Contenuti nel numero TabWidget sono i layout relativi per ciascuna scheda che contengono ciascuno uno ImageView e uno TextView. Per accedere direttamente al TextView nella scheda di indice 0 si può fare questo:

mTabHost.getTabWidget().getChildAt(0).findViewById(android.R.id.title); 

Poi, proprio cast come un TextView e si può modificarlo nel modo desiderato. Il seguito ha lavorato per me:

((TextView)mTabHost.getTabWidget().getChildAt(0).findViewById(android.R.id.title)).setText("New"); 
-1

Si consiglia di non usare più "TabHost" per ICS, è stato deprecato nella versione 13. invece avete bisogno di voi "ActionBar" ...

Tab mTab = super.getSupportActionBar().getTabAt(0); 
mTab.setText("new Title"); 

Android aggiornerà la scheda subito

+0

TabHost non è deprecato! dove vieni con questo? – AsafK

Problemi correlati