Mi piacerebbe che le mie schede Android sembrassero piatte e semplici come quelle nell'app ufficiale TWitter. Come posso sovrascrivere il tema predefinito (chiaro) e modificare le immagini di sfondo per le schede usando le definizioni di stile/tema?Come cambiare lo stile della scheda in Android?
risposta
È possibile regolare le schede tramite codice: ecco un estratto dalla mia applicazione, ma è possibile anche assegnare temi anziché l'immagine di sfondo direttamente. (Non ho ancora usato un modo tramite gli attributi xml, non sono sicuro che sia disponibile anche in qualche modo).
private void initTabs() {
tabs = (TabHost) findViewById(R.id.tabhost);
tabs.setup();
tabs.setBackgroundResource(R.drawable.bg_midgray);
TabHost.TabSpec spec;
// Location info
txtTabInfo = new TextView(this);
txtTabInfo.setText("INFO");
txtTabInfo.setPadding(0, 5, 0, 0);
txtTabInfo.setTextSize(11);
txtTabInfo.setBackgroundResource(R.drawable.bg_tab_left_active_right_inactive);
txtTabInfo.setTextColor(Color.DKGRAY);
txtTabInfo.setGravity(Gravity.CENTER_HORIZONTAL);
txtTabInfo.setHeight(39);
spec = tabs.newTabSpec("tabInfo");
spec.setContent(R.id.tabInfo);
spec.setIndicator(txtTabInfo);
tabs.addTab(spec);
...
}
spec. setIndicator (txtTabInfo); Questo non è permesso. Il compilatore dà errore a questa linea. – sachin
Si potrebbe anche farlo tramite XML e creare/definire un tema globale per tutte le schede nella tua app. C'è di più informazioni sulla creazione di widget temi qui: http://developer.android.com/guide/topics/ui/themes.html
ho usato la seguente definizione di mia disegnabile, tab_background.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_selected="true" android:drawable="@drawable/tab_bg_selected" />
<item android:drawable="@drawable/tab_bg_normal" />
</selector>
Poi iterare sopra le linguette per impostarle.
TabWidget tabWidget = tabHost.getTabWidget();
for(int i=0; i<tabWidget.getChildCount(); i++)
tabWidget.getChildAt(i).setBackgroundResource(R.drawable.tab_background);
La soluzione più elegante che ho visto fino ad ora è: http://stackoverflow.com/questions/3078081/setting-a-global-style-for-views-in-android/3166865#3166865 –