博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android TabHost的使用
阅读量:6296 次
发布时间:2019-06-22

本文共 5079 字,大约阅读时间需要 16 分钟。

  android 实现tab视图有2种方法,一种是在布局页面中定义<tabhost>标签,另一种就是继承tabactivity.但是我比较喜欢第二种方式,应为如果页面比较复杂的话你的XML文件会写得比较庞大,用第二种方式XML页面相对要简洁得多。

Tab标签页的使用
  首先要设计所有的分页的界面布局
  在分页设计完成后,使用代码建立
Tab
标签页,并给每个分页添加
标识和标题
  最后确定每个分页所显示的界面布局
 
建立一个“TabDemo”程序,包含三个XML文件,分别为tab1.xml、tab2.xml和tab3.xml,这3个文件分别使用线性布局、相对布局和绝对布局示例中的main.xml的代码,并将布局的ID分别定义为layout01、layout02和layout03
tab1.xml文件代码   
                       <?xml version="1.0" encoding="utf-8"?>
                       <LinearLayout android:id = "@+id/layout01"
                        ……
                        ……
                      </LinearLayout>
 
tab2.xml文件代码
        <?xml version="1.0" encoding="utf-8"?>
        <AbsoluteLayout android:id="@+id/layout02"
          ……
          ……
        </AbsoluteLayout>
 
tab3.xml文件代码                       
        <?xml version="1.0" encoding="utf-8"?>
        <RelativeLayout android:id="@+id/layout03"
         ……
          ……
        </RelativeLayout>
 
import android.app.TabActivity;
import android.os.Bundle;
import android.widget.TabHost;
import android.view.LayoutInflater;
 
public class TabDemo extends TabActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);       
  TabHost tabHost = getTabHost();
   LayoutInflater.from(this).inflate(R.layout.tab1, tabHost.getTabContentView(),true);   //将布局文件与TabHost关联在一起
   LayoutInflater.from(this).inflate(R.layout.tab2, tabHost.getTabContentView(),true);
   LayoutInflater.from(this).inflate(R.layout.tab3, tabHost.getTabContentView(),true);
 
 
   tabHost.addTab(tabHost.newTabSpec("TAB1").setIndicator("线性布局").setContent(R.id.layout01));  //setContent()指定每个Tab包含的View
   tabHost.addTab(tabHost.newTabSpec("TAB2").setIndicator("绝对布局").setContent(R.id.layout02));
   tabHost.addTab(tabHost.newTabSpec("TAB3").setIndicator("相对布局").setContent(R.id.layout03));
            }
 }
 
8
行代码的声明
TabDemo
类继承与
TabActivity
,与以往继承
Activity
不同,
TabActivity
支持内嵌多个
Activity
View
12
行代码通过
getTabHost()
函数获得了
Tab
标签页的容器,用以
承载可以点击的
Tab
标签和分页的界面布局。
13
行代码通过
LayoutInflater
tab1.xml
文件中的布局转换为
Tab
标签页可以使用的
View
对象
16
行代码使用
addTab()
函数添加了第
1
个分页,
tabHost.newTabSpec("TAB1")
表明在第
12
行代码中建立的
tabHost
上,添加一个标识为
TAB1
Tab
分页
17
行代码使用
setIndicator()
函数设定分页显示的标题,使用
setContent()
函数设定分页所关联的界面布局
 

 第二种方式,不继承TabActivity,在布局文件中定义TabHost即可,但是TabWidget的id必须是@android:id/tabs,FrameLayout的id必须是@android:id/tabcontent。

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
  3.     android:id="@+id/hometabs"  
  4.     android:orientation="vertical"  
  5.     android:layout_width="fill_parent"    
  6.     android:layout_height="fill_parent">   
  7.     <TabHost android:id="@+id/tabhost"         //继承自FrameLayout,下面只能显示一个节点,TabWidget 和FrameLayout 放在LinearLayout  下面
  8.          android:layout_width="fill_parent"  
  9.          android:layout_height="wrap_content">  
  10.          <LinearLayout  
  11.             android:orientation="vertical"  
  12.             android:layout_width="fill_parent"  
  13.             android:layout_height="fill_parent">  
  14.               
  15.              <TabWidget android:id="@android:id/tabs"   
  16.               android:orientation="horizontal"  
  17.               android:layout_width="fill_parent"  
  18.               android:layout_height="wrap_content">  
  19.             </TabWidget>  
  20.            
  21.              <FrameLayout android:id="@android:id/tabcontent"  
  22.                   android:layout_width="wrap_content"  
  23.                   android:layout_height="wrap_content">  
    1. <LinearLayout android:id="@+id/ll01" android:layout_width="fill_parent"  
    2.         android:layout_height="fill_parent" android:gravity="center_horizontal"  
    3.         android:orientation="vertical">  
    4.         <EditText android:id="@+id/widget34" android:layout_width="fill_parent"  
    5.             android:layout_height="wrap_content" android:text="EditText"  
    6.             android:textSize="18sp">  
    7.         </EditText>  
    8.         <Button android:id="@+id/widget30" android:layout_width="wrap_content"  
    9.             android:layout_height="wrap_content" android:text="Button">  
    10.         </Button>  
    11.     </LinearLayout>  
    12.     <LinearLayout android:id="@+id/ll02" android:layout_width="fill_parent"  
    13.         android:layout_height="fill_parent" android:gravity="center_horizontal"  
    14.         android:orientation="vertical">  
    15.         <AnalogClock android:id="@+id/widget36"  
    16.             android:layout_width="wrap_content" android:layout_height="wrap_content">  
    17.         </AnalogClock>  
    18.     </LinearLayout>  
    19.     <LinearLayout android:id="@+id/ll03" android:layout_width="fill_parent"  
    20.         android:layout_height="fill_parent" android:gravity="center_horizontal"  
    21.         android:orientation="vertical">  
    22.         <RadioGroup android:id="@+id/widget43"  
    23.             android:layout_width="166px" android:layout_height="98px"  
    24.             android:orientation="vertical">  
    25.             <RadioButton android:id="@+id/widget44"  
    26.                 android:layout_width="wrap_content" android:layout_height="wrap_content"  
    27.                 android:text="RadioButton">  
    28.             </RadioButton>  
    29.             <RadioButton android:id="@+id/widget45"  
    30.                 android:layout_width="wrap_content" android:layout_height="wrap_content"  
    31.                 android:text="RadioButton">  
    32.             </RadioButton>  
    33.         </RadioGroup>  
    34.     </LinearLayout> 
    35.  
  24.              </FrameLayout>  
  25.            
  26.          </LinearLayout>  
  27.     </TabHost>  
  28. </LinearLayout>  

 

  1. TabHost tabHost = (TabHost) findViewById(R.id.tabhost);  
  2.         tabHost.setup();                                     //完成初始化
  3.         TabWidget tabWidget = tabHost.getTabWidget();  
  4.         tabHost.addTab(tabHost.newTabSpec("tab1")  .setIndicator("tab1",  getResources().getDrawable(R.drawable.img01))  .setContent(R.id.1101));  
  5.         tabHost.addTab(tabHost   .newTabSpec("tab2").setIndicator("tab2",   getResources().getDrawable(R.drawable.img02))  
  6.                                   .setContent(R.id.1102));  
  7.         tabHost.addTab(tabHost   .newTabSpec("tab3").setIndicator("tab3",   getResources().getDrawable(R.drawable.img03))  
  8.                                    .setContent(R.id.1103));  

 

转载地址:http://gzlta.baihongyu.com/

你可能感兴趣的文章
java中包容易出现的错误及权限问题
查看>>
AngularJS之初级Route【一】(六)
查看>>
服务器硬件问题整理的一点总结
查看>>
SAP S/4HANA Cloud: Revolutionizing the Next Generation of Cloud ERP
查看>>
Mellanox公司计划利用系统芯片提升存储产品速度
查看>>
白帽子守护网络安全,高薪酬成大学生就业首选!
查看>>
ARM想将芯片装进人类大脑 降低能耗是一大挑战
查看>>
Oracle数据库的备份方法
查看>>
Selenium 自动登录考勤系统
查看>>
关于如何以编程的方式执行TestNG
查看>>
智能照明造福千家万户 家居智能不再是梦
查看>>
物联网如何跳出“看起来很美”?
查看>>
浅谈MySQL 数据库性能优化
查看>>
《UNIX/Linux 系统管理技术手册(第四版)》——1.10 其他的权威文档
查看>>
灵动空间 创享生活
查看>>
《UNIX网络编程 卷1:套接字联网API(第3版)》——8.6 UDP回射客户程序:dg_cli函数...
查看>>
不要将时间浪费到编写完美代码上
查看>>
《算法基础:打开算法之门》一3.4 归并排序
查看>>
高德开放平台开放源代码 鼓励开发者创新
查看>>
《高并发Oracle数据库系统的架构与设计》一2.5 索引维护
查看>>