2010-06-12 38 views
8

Me gustaría que mis pestañas de Android se vean planas y simples como las de la aplicación oficial TWitter. ¿Cómo puedo anular el tema predeterminado (claro) y cambiar las imágenes de fondo de las pestañas usando las definiciones de estilo/tema?¿Cómo cambiar el estilo de las pestañas en Android?

+0

La solución más elegante que vi hasta ahora es: http://stackoverflow.com/questions/3078081/setting-a-global-style-for-views-in-android/3166865#3166865 –

Respuesta

16

Puede ajustar las pestañas por código: aquí hay un extracto de mi aplicación, pero también puede asignar temas en lugar de la imagen de fondo directamente. (Todavía no he usado una forma vía atributos xml, no estoy seguro si eso también está disponible de alguna manera).

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

especificación. setIndicator (txtTabInfo); Esto no esta permitido. El compilador da error en esta línea. – sachin

3

he utilizado la siguiente definición de mi estirable, 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> 

A continuación, iterar sobre las pestañas para ajustarlos.

TabWidget tabWidget = tabHost.getTabWidget(); 

for(int i=0; i<tabWidget.getChildCount(); i++) 
    tabWidget.getChildAt(i).setBackgroundResource(R.drawable.tab_background); 
Cuestiones relacionadas