如何在Fragment Activity中自定义tab-widget?

时间:2014-03-18 10:20:35

标签: android android-fragmentactivity

我正在使用Fragment Activity来自定义tab-widget,在我进入Fragment Activity之前我使用TabActivity,现在它已被弃用。所以我要将它更新为Fragment Activity,但我不知道如何自定义标签栏并添加每个标签的内容。任何人都知道帮助我解决问题。

Java编码

private void setTabs()
{
    addTab("tab1", R.drawable.tab1, tab1.class);
    addTab("tab2", R.drawable.tab2, tab2.class);

    addTab("tab3", R.drawable.tab3, tab3.class);
    addTab("tab4", R.drawable.tab4, tab4.class);
}

private void addTab(String labelId, int drawableId, Class<?> c)
{
    FragmentTabHost tabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);

    TabHost.TabSpec spec = tabHost.newTabSpec("tab" + labelId); 

    View tabIndicator = LayoutInflater.from(this).inflate(R.layout.tab_indicator, null, 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);
    tabHost.addTab(spec);
}

2 个答案:

答案 0 :(得分:0)

已编辑... 使用此行来膨胀片段选项卡:)

mTabHost.getTabWidget().getChildAt(0).inflate(getActivity(), R.layout.tab_layout, null);    

振作起来

这很容易我的朋友:答案在于你的Tabhot。看到你的一部分代码。

tabHost.addTab(newTab(Constants.TAG_MainActivity, R.string.hello_world, R.id.tab1));
tabHost.addTab(newTab(Constants.TAG_Search, R.string.hello_world, R.id.tab2));
tabHost.addTab(newTab(Constants.TAG_Maps_Location, R.string.hello_world, R.id.tab3));
tabHost.addTab(newTab(Constants.TAG_More_Page, R.string.hello_world, R.id.tab4));

tabHost.getTabWidget().getChildAt(0).setBackgroundResource(R.drawable.footer_home_selector);
tabHost.getTabWidget().getChildAt(1).setBackgroundResource(R.drawable.footer_search_selector);
tabHost.getTabWidget().getChildAt(2).setBackgroundResource(R.drawable.footer_camera_selector);
tabHost.getTabWidget().getChildAt(3).setBackgroundResource(R.drawable.footer_more_selector);

private TabSpec newTab(String tag, int labelId, int tabContentId) {
    Log.d(TAG, "buildTab(): tag=" + tag);

    TabSpec tabSpec = mTabHost.newTabSpec(tag);
    tabSpec.setIndicator("");
    tabSpec.setContent(tabContentId);
    return tabSpec;
}

答案 1 :(得分:0)

要添加选项卡,您必须使用tabhost对象。 设置tabhost后,尝试将新标签添加为:

mTabHost.addTab(mTabHost.newTabSpec("tab1").setIndicator("Tab1",getResources().getDrawable(R.drawable.tab1)),Tab1.class, null);

这将创建标签以及标签标题和图标。 如果您想为标签设置背景,请使用:

View v = mTabHost.getTabWidget().getChildAt(i);
v.setBackgroundResource(R.drawable.tab_bg);

此处, i 是标签的位置。