¿Cómo cambio el fondo de un widget de pestañas de Android?



programacion android pdf 2018 (5)

Mi clase se extiende extiende TabActivity

TabHost mTabHost =  getTabHost();

TabHost.TabSpec tab1 =mTabHost.newTabSpec("tab1");
TabHost.TabSpec tab2 =mTabHost.newTabSpec("tab2");

tab1 .setIndicator("title tab1");
tab2 .setIndicator("title tab2");
mTabHost.addTab(tab1);mTabHost.addTab(tab2);

TabHost.setCurrentTab(0 or 1)

¿Alguien puede guiarme cómo puedo cambiar la imagen de fondo o el color de la pestaña seleccionada?


Esto configurará los colores de tu pestaña:

public static void setTabColor(TabHost tabhost) {
    for(int i=0;i<tabhost.getTabWidget().getChildCount();i++) {
        tabhost.getTabWidget().getChildAt(i).setBackgroundColor(Color.parseColor("#FF0000")); //unselected
    }
    tabhost.getTabWidget().getChildAt(tabhost.getCurrentTab()).setBackgroundColor(Color.parseColor("#0000FF")); // selected
}

y si lo coloca dentro de theTabChangedListener (), mantendrá el color correcto para las pestañas seleccionadas.


¿ this resuelve tu problema? Básicamente llamando a setBackgroundDrawable en cada vista de pestaña con un selector?


¿Qué ocurre si te registras en los eventos de TabHost.OnTabChanged y llamas a mTabHost.getCurrentTabView () para obtener la Vista y luego view.setBackgroundResource ()?


Establecí el parámetro 'android: background' en el elemento TabWidget del XML para dar el fondo genérico de todas las pestañas.

Luego pasé las vistas infladas de otro XML en el método '.setIndicator'.

 View v = LayoutInflater.from(this).inflate(R.layout.tab_widget, null);
    TextView label = (TextView) v.findViewById(R.id.tabLabel);
    label.setText("Whatever");
 tab1 .setContent(v);

Siento que es una forma más agradable de hacer esto.


>     TabHost mTabHost =  getTabHost();
>     
>     TabHost.TabSpec tab1 =mTabHost.newTabSpec("tab1");
>     TabHost.TabSpec tab2 =mTabHost.newTabSpec("tab2");
>     
>     tab1.setIndicator("title tab1");
>     tab2.setIndicator("title tab2");
>     mTabHost.addTab(tab1) ;mTabHost.addTab(tab2);
>     
>     TabHost.setCurrentTab(0 or 1);


mTabHost.getTabWidget().getChildAt(0).setBackgroundResource(R.drawable.tab1selector); 

mTabHost.getTabWidget().getChildAt(1).setBackgroundResource(R.drawable.tab2selector);    

mTabHost.getTabWidget().getChildAt(2).setBackgroundResource(R.drawable.tab3selector);    

mTabHost.getTabWidget().getChildAt(3).setBackgroundResource(R.drawable.tab4selector);

Utilice .setBackgroundResource y tabNselector es un XML - tabNselector.xml

    <?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_selected="false" android:drawable="@drawable/tabN"/>
   <item android:state_selected="true" android:drawable="@drawable/tabNsel"  />
</selector>




tabs