2010-05-29 13 views
13

La mia applicazione deve aggiornare l'indicatore di tabulazione in modo dinamico, sto cercando di farlo invocando TabSpec.setIndicator(), ma non funziona. Ecco il mio codice:Modifica dinamicamente l'indicatore di tabulazione in Android

Nel metodo onCreate di TabActivity:

tabHost = getTabHost(); 
TabSpec tabSpec = tabHost.newTabSpec("abc"); 
tabSpec.setIndicator("helloabc"); 
tabSpec.setContent(new MyViewFactory()); 
tabHost.addTab(tabSpec); 

ora ho bisogno di cambiare indicatore scheda ad un'altra stringa, per esempio, "xyz"

TabSpec tabSpec = MyTabActivity.getTabSpec(); 
tabSpec.setIndicator("xyz"); 

Ma doesn' lavoro. Quindi mi piacerebbe sapere come cambiare l'indicatore di tabulazione dopo che è stato aggiunto al tabhost? Grazie molto.

Soluzione

Grazie a @CommonsWare, mi rendono utilizzando TabWidget.getChildAt, ecco il mio codice per la vostra convenienza:

TextView title = (TextView) tabHost.getTabWidget().getChildAt(tabId).findViewById(android.R.id.title) 
title.setText("xyz"); 
+0

posso cambiare l'indicatore di immagine in questo modo? – keen

risposta

13

Mi scuso per la mia precedente risposta non corretta, ora cancellati .

Provare a utilizzare getChildViewAt() su TabWidget.

+0

Come posso cambiare l'indicatore dell'immagine della barra delle linguette? – keen

7

ho gestito con getChildTabViewAt(tabId) anziché childviewAt(id) per più schede.

1

Prova questo:

TextView title = (TextView) TabHost.getTabWidget().getChildTabViewAt(tabId).findViewById(android.R.id.title); 
Problemi correlati