TabHost是整个Tab的容器,包含TabWidget和FrameLayout两个部分,TabWidget是每个Tab的表情(图标效果),FrameLayout是Tab内容
实现方式有两种:
1、继承TabActivity
2、继承Activity类
方法一:继承TabActivity
从TabActivity中用getTabHost()方法获取TabHost,然后设置标签内容
布局:
1、TabHost 必须设置android:id为@android:id/tabhost
2、TabWidget 必须设置android:id为@android:id/tabs
3、FrameLayout 必须设置android:id为@android:id/tabcontent
这几个都是系统自带id,最好是快捷键联想生成,不要手写,这样不容易出错
XML布局文件:
1 <TabHost xmlns:android="http://schemas.android.com/apk/res/android" 2 android:layout_width="match_parent" 3 android:layout_height="match_parent" 4 android:id="@android:id/tabhost" 5 > 6 7 <LinearLayout 8 android:layout_width="match_parent" 9 android:layout_height="match_parent" 10 android:orientation="vertical" 11 > 12 13 14 15 <FrameLayout 16 android:layout_width="match_parent" 17 android:layout_height="0dp" 18 android:layout_weight="1" 19 android:id="@android:id/tabcontent" 20 > 21 <LinearLayout 22 android:layout_width="match_parent" 23 android:layout_height="match_parent" 24 android:id="@+id/widget_layout_red" 25 android:background="#ff0000" 26 android:orientation="vertical" 27 ></LinearLayout> 28 29 <LinearLayout 30 android:layout_width="match_parent" 31 android:layout_height="match_parent" 32 android:id="@+id/widget_layout_yellow" 33 android:background="#FCD209" 34 android:orientation="vertical" 35 ></LinearLayout> 36 37 </FrameLayout> 38 <TabWidget 39 android:layout_width="match_parent" 40 android:layout_height="wrap_content" 41 android:id="@android:id/tabs" 42 android:background="@mipmap/ic_launcher" 43 > 44 45 </TabWidget> 46 </LinearLayout> 47 </TabHost>
Java代码实现:
1 public class MainActivity extends TabActivity { 2 private TabHost tabhost; 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_main); 7 8 //从TabActivity上面获取放置Tab的TabHost 9 tabhost = getTabHost(); 10 11 tabhost.addTab(tabhost 12 //创建新标签one 13 .newTabSpec("one") 14 //设置标签标题 15 .setIndicator("红色") 16 //设置该标签的布局内容 17 .setContent(R.id.widget_layout_red)); 18 tabhost.addTab(tabhost.newTabSpec("two").setIndicator("黄色").setContent(R.id.widget_layout_yellow)); 19 } 20 }
实现效果如下:
方法二:继承Activity类
布局:
1、TabHost 可自定义id
2、TabWidget 必须设置android:id为@android:id/tabs
3、FrameLayout 必须设置android:id为@android:id/tabcontent
XML布局:
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/zidingyi" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <FrameLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:id="@android:id/tabcontent" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/widget_layout_red" android:background="#ff0000" android:orientation="vertical" ></LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/widget_layout_yellow" android:background="#FCD209" android:orientation="vertical" ></LinearLayout> </FrameLayout> <TabWidget android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@android:id/tabs" android:background="@mipmap/ic_launcher" > </TabWidget> </LinearLayout> </TabHost>
java代码实现:
public class MainActivity extends Activity {
private TabHost tabhost;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//得到TabHost对象实例
tabhost =(TabHost) findViewById(R.id.ho);
//调用 TabHost.setup()
tabhost.setup();
//创建Tab标签
tabhost.addTab(tabhost.newTabSpec("one").setIndicator("红色").setContent(R.id.widget_layout_red));
tabhost.addTab(tabhost.newTabSpec("two").setIndicator("黄色").setContent(R.id.widget_layout_yellow));
}
}