2010-06-05 62 views
1

我知道API 3不允許爲選項卡設置視圖,但我仍然需要修改顯示爲指標的TextView。我還想更改該選項卡的Drawable,但我沒有看到1.6版API 4中允許的自定義選項卡視圖。在SDK 1.5中自定義TabWidget,API 3

使用下面的這個通用示例,是否有如何檢索TextView並修改其屬性或更改繪圖?

 TabHost tabHost = getTabHost(); 
     TabHost.TabSpec spec; 

     spec = tabHost.newTabSpec("nearby") 
         .setIndicator("Nearby Activity") 
         .setContent(R.id.nearby_list);     
     tabHost.addTab(spec);   

     spec = tabHost.newTabSpec("friends") 
        .setIndicator("Friends & Favorites") 
         .setContent(R.id.friends_list); 
     tabHost.addTab(spec);   

     tabHost.setCurrentTabByTag("nearby"); 

感謝您的任何幫助。

回答

1

更改圖標:

.setIndicator("Friends & Favorites",getResources().getDrawable(R.drawable.myTabIcon)) 

改變TabBackground可繪製::

tabHost.getTabWidget().getChildAt(index of tab).setBackgroundResource(R.drawable.mytab_Newbackground); 

檢索的TextView,檢查弗朗西斯的樣品

ViewGroup v = (ViewGroup) tabHost.getTabWidget().getChildAt(index of tab); 
TextView tv = (TextView)v.getChildAt(1); 
Log.d("Tab's text = ",tv.getText().toString()); 
1

由於Tabwidget是一個普通的ViewGroup我認爲你應該訪問它的所有子項 。 像這樣的東西應該工作:

tabHost.setOnTabChangedListener(this); 
.... 
... 


@Override 
    public void onTabChanged(String tabId) { 

     int count = tabHost.getTabWidget().getChildCount(); 
     for (int i = 0; i < count; i++){ 
      ViewGroup v = (ViewGroup) tabHost.getTabWidget().getChildAt(i); //Should be a relative layout 
      TextView tv = (TextView)v.getChildAt(1); //At position 0 should be the ImageView 
      Log.d("onTabChanged",tv.getText().toString()); 
     } 

    } 

也許,你有索引位置找到合適的視圖中播放。