自定义竖型TabWidget

来源:互联网 发布:服务器安全狗linux版 编辑:程序博客网 时间:2024/05/01 23:03
原文地址:
这个方法叫做“以假乱真法”
先上图:

中心思想:把自带的TabWidget隐藏,自己创建一个左侧的竖型tab栏,添加tab监听,以此实现竖型tabwidget
第一步,创建menu.xml布局文件
<TabHost android:id="@android:id/tabhost">
     <TabWidget android:id="@android:id/tabs" android:visibility="gone"
     <LinearLayout ></LinearLayout>
     <FrameLayout android:id="@android:id/tabcontent"/>
</TabHost>
从id的取名就可以大致看出TabHost、TabWidget、FrameLayout各自的作用
TabWidget--用来定义选项卡,此法里面一定要有这句话android:visibility="gone"
FrameLayout--用来显示选项卡对应的内容,通常是一些Activity
中间的<LinearLayout>节点就有意思了,这个是“以假乱真”的关键。左侧竖型tab就是在这个里面定义的
第二步,创建每个Activity的xml文件
这里所说的Activity就是要包含进右侧frameLayout中的Activity
第三步,代码实现tabWidget初始化
// 得到TabHost对象
           tabHost= getTabHost();
           Intent intent1 =newIntent(this, MenuSetActivity.class);
           // 第一个参数是用来指定标签的;
           // 第二个参数是显示到页面上的tag,在这里不会显示到页面,因为设置visibility gone;
           // 第三个参数是选项卡内容
     spec1=tabHost.newTabSpec(SETTAG).setIndicator(SETTAG).setContent(intent1);
           tabHost.addTab(spec1);
第四步,添加监听
@Override
     publicvoidonClick(View v) {
           intcheckedId = v.getId();
           if(currentId== checkedId){
                //当点击的tab与当前tab一致时,返回
                return;
           }
           switch(checkedId) {
           caseR.id.systemset_set_text:
                setCurrentTabByTag(SETTAG);
                break;
         }
setCurrentTabByTag就是根据当前的tag去查找相应的tab

0 0
原创粉丝点击