android:tabHost学习记录

一、TabHost可以很方便的在窗口上放置多个标签页,每个标签页相当于获得了一个与外部容器相同大小的组件摆放区域。TabHost仅仅是一个简单的容器,它提供了如下两个方法创建选项卡、添加选项卡:

-->newTabSpec(String tag):创建选项卡

-->addTab(TabHost.TabSpec tabSpec):添加选项卡

使用TabHost的一般步骤:

1.在界面布局中定义TabHost组件,并为该组件定义该选项卡的内容;

2.Activity应该继承TabActivity;

3.调用TabActivity的getTabHost()获取TabHost对象;

4.通过TabHost对象的方法来创建选项卡,添加选项卡。


package com.javaee;

import android.app.Activity;
import android.app.TabActivity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;

public class MainActivity extends TabActivity implements OnTabChangeListener{
    /** Called when the activity is first created. */
	private TabHost tabHost;
	private int myMenuSetting = 0;
	private Menu menu;
	private static final int myMenuResources[] = {R.menu.a_menu, R.menu.b_menu, R.menu.c_menu};
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        tabHost = getTabHost();
        LayoutInflater.from(this).inflate(R.layout.main, tabHost.getTabContentView(), true);
        tabHost.setBackgroundColor(Color.argb(150, 22, 70, 150));
        
        tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("A", getResources().getDrawable(R.drawable.gimp)).setContent(R.id.layout01));
        tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("B", getResources().getDrawable(R.drawable.mumule)).setContent(R.id.layout02));
        tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("C", getResources().getDrawable(R.drawable.notepad)).setContent(R.id.layout03));
        
        tabHost.setOnTabChangedListener(this);
        
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    	// TODO Auto-generated method stub
    	this.menu = menu;
    	menu.clear();
    	
    	MenuInflater inflater = getMenuInflater();
    	switch (myMenuSetting) {
		case 0:
			inflater.inflate(myMenuResources[0], menu);
			break;
		case 1:
			inflater.inflate(myMenuResources[1], menu);
			break;
		case 2:
			inflater.inflate(myMenuResources[2], menu);
		default:
			break;
		}
    	return super.onCreateOptionsMenu(menu);
    }
    
	@Override
	public void onTabChanged(String tabId) {
		// TODO Auto-generated method stub
		if(tabId.equals("tab1")){
			myMenuSetting = 0;
		}else if(tabId.equals("tab2")){
			myMenuSetting = 1;
		}else if(tabId.equals("tab3")){
			myMenuSetting = 2;
		}
		if(menu != null){
			onCreateOptionsMenu(menu);
		}
		
	}
}

 

通过LayoutInflater.from(this).inflate(R.layout.main, tabHost.getContentView, true)为TabHost制定布局;

通过tabHost.addTab(TabHost.TabSpec tabSpec);添加选项卡标签;

通过tabSpec.setIndicator()设置标签样式,其中有三个方法:

1、setIndicator(CharSequence label):指定标签的文本信息;

2、setIndicator(CharSequence label, Drawable icon):指定文本图片标签;

3、setIndicator(View):通过一个View来指定标签。

通过setSpec.setContent()设置各选项卡的内容,其中有三个方法:

1、setContent(TabHost.TabContentFactory contentFactory):通过TabHost.TabContentFactory工厂创建选项卡的内容;

2、setContent(int viewId):通过一个id制定选项卡的内容;

3、setContent(Intent intent):通过一个Intent指定选项卡跳转到一个Activity。



生成LayoutInflater有三种方式:

1、inflater = getLayoutInflater();

2、inflater = LayoutInflater.from(this);
3、inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);

   LayoutInflater.inflate:将Layout文件转换为View。专门供Layout使用的Inflate,虽然Layout也是View的子类,但在android中如果想将其他的xml中的Layout转换为View放入.java代码中操作 , 只能通过Inflater,而不能直接通过findViewById()。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值