2010-06-12 4 views
8

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?

+0

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 –

risposta

16

È 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); 
    ... 
} 
+0

spec. setIndicator (txtTabInfo); Questo non è permesso. Il compilatore dà errore a questa linea. – sachin

3

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);