Question

Dois-je définir différentes images comme fond d'onglet sur différents états. J'ai mis une image en arrière-plan pour défaut mais comment passer à autre lorsque l'onglet sélectionné. Ci-dessous mon code.

public class HelloTabWidget extends  TabActivity {            

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Resources res = getResources(); // Resource object to get Drawables    
        TabHost tabHost = getTabHost();  // The activity TabHost    
        TabHost.TabSpec spec;  // Resusable TabSpec for each tab    
        Intent intent;  // Reusable Intent for each tab
        TabWidget tw = getTabWidget(); 


        for (int i = 0; i < tw.getChildCount(); i++) { 
                    View v = tw.getChildAt(i); 
                    v.setBackgroundDrawable(getResources().getDrawable 
        (R.drawable.tab_artist)); 
                  } 



        //First tab
        intent = new Intent().setClass(this, FirstActivity.class);    // Initialize a TabSpec for each tab and add it to the TabHost    
        spec = tabHost.newTabSpec("First").setIndicator("First")
        .setContent(intent);    
        tabHost.addTab(spec);
        getTabHost().getTabWidget().getChildAt(0).setBackgroundResource(R.drawable.tabselected);

         //Second tab
         intent = new Intent().setClass(this, SecondActivity.class);    // Initialize a TabSpec for each tab and add it to the TabHost    
            spec = tabHost.newTabSpec("Second").setIndicator("Second")
            .setContent(intent);    
            tabHost.addTab(spec);
             getTabHost().getTabWidget().getChildAt(1).setBackgroundResource(R.drawable.tabselected);

             //third
             intent = new Intent().setClass(this, ThirdActivity.class);    // Initialize a TabSpec for each tab and add it to the TabHost    
                spec = tabHost.newTabSpec("Third").setIndicator("Third")
                .setContent(intent);    
                tabHost.addTab(spec);
                getTabHost().getTabWidget().getChildAt(2).setBackgroundResource(R.drawable.tabselected);

    }
}

/ * tab_artist.xml * /

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">    
<!-- When selected, use grey -->    
<item android:background="@drawable/tabselected"  android:state_selected="true" />    
<!-- When not selected, use white-->    
<item android:background="@drawable/tabunselected" />
</selector>
Était-ce utile?

La solution

public class HelloTabWidget extends  TabActivity implements OnTabChangeListener{  
.....

mTabHost. setOnTabChangedListener(this);

@Override
    public void onTabChanged(String tabId) {

              // Here in tabId you will get the name of the Tab from that you can check and set the background 
                // of the requirement tab according to need.
    }
}

Autres conseils

Mettre en œuvre onTabChangeListener() et il modifier leurs origines. Vive

http://developer.android.com/reference/android/ widget / TabHost.OnTabChangeListener.html

Edit: Utilisez le tabHost pour mettre en œuvre la méthode. Vous pouvez implémenté où vous voulez. Disons que faire après avoir défini tous les TabWidgets. Sa bonne pratique d'utiliser ids de l'onglet comme vous les avez mis « d'abord », « Second » etc etc.

 tabHost.setOnTabChangedListener(new OnTabChangeListener(){
          @Override
            public void onTabChanged(String tabId) {
                        if(tabId.equals("First"){
                                //do something
                        }else if(tabId.equals("Second"))
                        {
                            //do something
                        }// etc etc etc


                        }});

cela peut vous aider

Tabhost.setOnTabChangedListener(new OnTabChangeListener(){
@Override
        public void onTabChanged(String tabId) {

            for(int i=0;i<tb.getTabWidget().getChildCount();i++)
            {
                   tb.getTabWidget().getChildAt(i).setBackgroundResource(R.drawable.tabunselected); //unselected
            }
            tb.getTabWidget().getChildAt(tb.getCurrentTab()).setBackgroundResource(R.drawable.tabselected); 
}});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top