码迷,mamicode.com
首页 > 移动开发 > 详细

Android TabHost 实现Tab切换

时间:2018-01-05 12:20:52      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:不容易   abs   对象   com   width   布局文件   zid   class   gpo   

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));

    }


}

 

Android TabHost 实现Tab切换

标签:不容易   abs   对象   com   width   布局文件   zid   class   gpo   

原文地址:https://www.cnblogs.com/lyd447113735/p/8203232.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!