2012-04-26 61 views
2

我有如何更改TabHost编程/不干胶标签动态

this.tabHost = getTabHost(); 

    // Resusable TabSpec for each tab 
    Intent intent; // Reusable Intent for each tab 

    // Create an Intent to launch the first Activity for the tab (to be reused) 
    intent = new Intent().setClass(this, FirstGroup.class); 

    // Initialize a TabSpec for the first tab and add it to the TabHost 
    spec1 = tabHost.newTabSpec("FirstGroup").setIndicator("Regionlar", 
      getResources().getDrawable(R.drawable.region2)) // Replace null with R.drawable.your_icon to set tab icon 
        .setContent(intent); 
    tabHost.addTab(spec1); 

创建tabhost我想以编程方式更改tabhost的标签:“Regionlar”到“newMenuTabbar”。我找不到任何例子。感谢您的关注。

编辑: 我想从 “Mənzərələr”=> “secondTabitem”

意图=新意图()更改第二的TabItem的标签setClass(这一点,FirstGroup.class)。

// Initialize a TabSpec for the first tab and add it to the TabHost 
    spec1 = tabHost.newTabSpec("FirstGroup").setIndicator("Regionlar", 
      getResources().getDrawable(R.drawable.region2)) // Replace null with R.drawable.your_icon to set tab icon 
        .setContent(intent); 
    tabHost.addTab(spec1); 

     // Create an Intent to launch an Activity for the tab (to be reused) 
    intent = new Intent().setClass(this, SecondActivityGroup.class); 
    spec2 = tabHost.newTabSpec("SecondActivityGroup").setIndicator("Mənzərələr", 
      getResources().getDrawable(R.drawable.img_gallery_icon)) // Replace null with R.drawable.your_icon to set tab icon 
        .setContent(intent); 
    tabHost.addTab(spec2); 

回答

5

试试这个:

final TextView label = (TextView) tabHost.getTabWidget().findViewById(android.R.id.title); 
label .setText(YOUR NEW LABEL); 

希望这将有助于。

+1

如何更改第二个tabitem的标签?我编辑了这个问题。 – Coenni 2012-04-26 08:45:35

+2

我已经解决了: final TextView label =(TextView)tabHost.getTabWidget()。getChildAt(1).findViewById(android.R.id.title); \t label .setText(“newTabmenu”); 您可以使用getchildat(i)方法更改tabitem的每个标签。 – Coenni 2012-04-26 08:51:11

+0

是的,你可以得到每个标签的索引: final int k = tabHost.getCurrentTab(); – 2012-04-26 08:52:21

0

试试这个代码

public class SlideMainActivity extends TabActivity { 
    public static RelativeLayout headerLayout; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
     setContentView(R.layout.main_silde_tab); 
     getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, 
       R.layout.hd_header); 
     setTabs(); 
    } 

    private void setTabs() { 
     addTab("FirstGroup", R.drawable.tab_home, FirstGroup.class); 
     addTab("Regionlar", R.drawable.tab_search, Regionlar.class); 

    } 

    private void addTab(String labelId, int drawableId, Class<?> c) { 
     TabHost tabHost = getTabHost(); 
     Intent intent = new Intent(this, c); 
     TabHost.TabSpec spec = tabHost.newTabSpec("tab" + labelId); 

     View tabIndicator = LayoutInflater.from(this).inflate(
       R.layout.tab_indicator, getTabWidget(), false); 
     TextView title = (TextView) tabIndicator.findViewById(R.id.title); 
     title.setText(labelId); 
     ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon); 
     icon.setImageResource(drawableId); 

     spec.setIndicator(tabIndicator); 
     spec.setContent(intent); 
     tabHost.addTab(spec); 
    } 

} 
0

b.i的代码只能改变第一个选项卡的标题。 我认为这是一种更直接的方式来完成的事情:

((TextView) mTabHost.getTabWidget().getChildTabViewAt(position) 
.findViewById(android.R.id.title)) 
.setText(yourTitle); 

其中position是标签的位置和yourTitle是你希望的选项卡设置标题。如果你想改变文本当前选项卡,然后,而不是由getCurrentTab更换position,你可以通过getCurrentTabView()

谁写这应该定义一个setTabText(int position, String text)方法代替getTabWidget().getChildTabViewAt(position) ,不然谁知道他们有一个文本查看id'ed android.R.id.title?或者如果他们已经有了,请赐教。