我写了一些包含TabHost的应用。 每个选项卡都包含一个LinearLayout - 我想在每个选项卡中添加一些不同的存在片段
怎么做?
private void setNewTab(Context context, TabHost tabHost, String tag, String title, int contentID ){
TabHost.TabSpec tabSpec = tabHost.newTabSpec(tag);
tabSpec.setIndicator(title);
Fragment newFragment = new ActionFragment ();
tabSpec.setIndicator(newFragment.getView());
tabSpec.setContent(contentID);
tabHost.addTab(tabSpec); // after this line i get an exception
}
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</TabWidget>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/tab1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_blue_light">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tab 1 Content" />
</LinearLayout>
<LinearLayout
android:id="@+id/tab2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_red_dark">
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tab 2 Content" />
</LinearLayout>
<LinearLayout
android:id="@+id/tab3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_green_light">
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tab 3 Content" />
</LinearLayout>
</FrameLayout>
</LinearLayout>
答案 0 :(得分:4)
如果有多个标签,请将ViewPager
与FragmentStatePagerAdapter
一起使用。如果您只有2到3个标签,请使用PagerAdapter
。
查看以下链接,它非常清楚地解释了ViewPager
与TabLayout
一起使用的原因。
https://guides.codepath.com/android/google-play-style-tabs-using-tablayout
TabLayout
ViewPager
在您的方案中运行良好。
答案 1 :(得分:1)
快速搜索“Android Fragment TabHost”到FragmentTabHost
class的文档结果中。你在用它吗?
mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
mTabHost.addTab(mTabHost.newTabSpec("action").setIndicator("action"), ActionFragment.class, null);
我仍然认为TabLayout会更容易。
如果你想要底部的标签,甚至可以选择。
Which view should be used for new Material Design Bottom Navigation?