TabHost应用

来源:互联网 发布:已备案的域名怎么转让 编辑:程序博客网 时间:2024/05/02 02:07

方法一:

1. Activity_main.xml中加入TabHost组件

2.

public class MainActivity extends TabActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        TabHost tabHost = getTabHost(); 
        //新建一个newTabSpec,设置标签和图标(setIndicator),设置内容(setContent) 
        tabHost.addTab(tabHost.newTabSpec("首页").setIndicator("",getResources().getDrawable(android.R.drawable.ic_menu_call)).setContent(R.id.tab1)); 
        tabHost.addTab(tabHost.newTabSpec("新闻").setIndicator("",getResources().getDrawable(android.R.drawable.ic_menu_camera)).setContent(R.id.tab2));
        tabHost.addTab(tabHost.newTabSpec("组图").setIndicator("",getResources().getDrawable(android.R.drawable.ic_menu_camera)).setContent(R.id.tab3));
        //设置TabHost的背景颜色 
        tabHost.setBackgroundColor(Color.argb(150,22,70,150)); 
        //设置TabHost的背景图片资源 
        //tabHost.setBackgroundResource(R.drawable.bg); 
        //设置当前现实哪一个标签 
        tabHost.setCurrentTab(0);   //0为标签ID 
        //标签切换处理,用setOnTabChangedListener    
        tabHost.setOnTabChangedListener(new OnTabChangeListener(){ 
         public void onTabChanged(String tabId){ 
          Toast.makeText(MainActivity.this, "This is a Test!", Toast.LENGTH_LONG).show();
         } 
        }); 
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

 

 

方法二:

1.

q建立一个“TabDemo”程序,包含三个XML文件,分别为tab1.xmltab2.xmltab3.xml3个文件分别使用线性布局、相对布局和绝对布局示例中的main.xml的代码,并将布局的ID分别定义为layout01layout02layout03
qtab1.xml文件代码
1.<?xml version="1.0" encoding="utf-8"?>
2.<LinearLayoutandroid:id = "@+id/layout01"
3.  ……
4.  ……
5.</LinearLayout>
 
qtab2.xml文件代码
1.<?xml version="1.0" encoding="utf-8"?>
2.<AbsoluteLayoutandroid:id="@+id/layout02"
3.  ……
4.  ……
5.</AbsoluteLayout>
 
qtab3.xml文件代码
1.<?xml version="1.0" encoding="utf-8"?>
2.<RelativeLayoutandroid:id="@+id/layout03"
3.  ……
4.  ……
5.</RelativeLayout>
 
2.
qTabDemo.java文件中键入下面的代码,创建Tab标签页,并建立子页与界面布局直接的关联关系
1.package edu.hrbeu.TabDemo;
2.
3.import android.app.TabActivity;
4.import android.os.Bundle;
5.import android.widget.TabHost;
6.import android.view.LayoutInflater;
7.
8.public class TabDemo extendsTabActivity {
9.  @Override
10.            public void onCreate(BundlesavedInstanceState){
11.  super.onCreate(savedInstanceState);       
12.  TabHosttabHost =getTabHost();
13.  LayoutInflater.from(this).inflate(R.layout.tab1,
 
tabHost.getTabContentView(),true);
14.  LayoutInflater.from(this).inflate(R.layout.tab2,
 
tabHost.getTabContentView(),true);
15.  LayoutInflater.from(this).inflate(R.layout.tab3,
 
tabHost.getTabContentView(),true);
16.  tabHost.addTab(tabHost.newTabSpec("TAB1")
17.  .setIndicator("线性布局").setContent(R.id.layout01));
18.  tabHost.addTab(tabHost.newTabSpec("TAB2")
19.  .setIndicator("绝对布局").setContent(R.id.layout02));
20.  tabHost.addTab(tabHost.newTabSpec("TAB3")
21.  .setIndicator("相对布局").setContent(R.id.layout03));
22.            }
23. }
 
n8行代码的声明TabDemo类继承与TabActivity,与以往继承Activity不同,TabActivity支持内嵌多个ActivityView
n12行代码通过getTabHost()函数获得了Tab标签页的容器,用以承载可以点击的Tab标签和分页的界面布局。
n13行代码通过LayoutInflatertab1.xml文件中的布局转换为Tab标签页可以使用的View对象
n16行代码使用addTab()函数添加了第1个分页,tabHost.newTabSpec("TAB1")表明在第12行代码中建立的tabHost上,添加一个标识为TAB1Tab分页
17行代码使用setIndicator()函数设定分页显示的标题,使用setContent()函数设定分页所关联的界面布局

 

 

注:要想让TABHOST位于页面底部:

1、tabcontent和tabs交换位置
2、tabcontent的android:layout_weight="1"

1、tabcontent和tabs交换位置
2、将tabcontent放到一个relativeLayout中,然后加上这句android:layout_alignParentBottom="true"

 

原创粉丝点击