0

さまざまな状態のタブの背景としてさまざまな画像を設定する必要があります。デフォルトの背景として1つの画像を設定しましたが、タブが選択されたときに別の画像に切り替える方法。以下は私のコードです。

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>
4

3 に答える 3

0

実装onTabChangeListener()し、背景を変更します。乾杯

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

編集: tabHost を使用してメソッドを実装します。いつでもどこでも実装できます。すべての TabWidgets を設定した後にそれを行うとしましょう。「First」、「Second」などを設定したように、タブの ID を使用することをお勧めします。

 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


                        }});
于 2011-09-05T11:51:39.517 に答える
0
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.
    }
}
于 2011-09-05T12:23:28.907 に答える