您的位置:首页 > 移动开发 > Android开发

Android TabWidget/TabHost的使用

2011-06-03 10:14 387 查看
2010-06-07

Android TabWidget/TabHost的使用

文章分类:Java编程

Android TabWidget/TabHost有两种使用方法:

第一种:使用系统自带写好的TabHost(及继承自TabActivity类)具体代码如下:

Java代码




<?xml version="1.0" encoding="utf-8"?>

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

<LinearLayout android:id="@+id/tab1"

android:layout_width="fill_parent" android:layout_height="fill_parent"

androidrientation="vertical">

<TextView android:id="@+id/TextView1"

android:text="This is a tab1" android:layout_width="fill_parent"

android:layout_height="wrap_content">

</TextView>

</LinearLayout>

<LinearLayout android:id="@+id/tab2"

android:layout_width="fill_parent" android:layout_height="fill_parent"

androidrientation="vertical">

<TextView android:id="@+id/TextView2"

android:text="This is a tab2" android:layout_width="fill_parent"

android:layout_height="wrap_content">

</TextView>

</LinearLayout>

<LinearLayout android:id="@+id/tab3"

android:layout_width="fill_parent" android:layout_height="fill_parent"

androidrientation="vertical">

<TextView android:id="@+id/TextView3"

android:text="This is a tab3" android:layout_width="fill_parent"

android:layout_height="wrap_content">

</TextView>

</LinearLayout>

</FrameLayout>

Java代码




package com.Aina.Android;

import android.app.AlertDialog;

import android.app.Dialog;

import android.app.TabActivity;

import android.content.DialogInterface;

import android.os.Bundle;

import android.view.LayoutInflater;

import android.widget.TabHost;

public class Test_TabWidget extends TabActivity {

/** Called when the activity is first created. */

private TabHost tabHost;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// setContentView(R.layout.main);

tabHost = this.getTabHost();

LayoutInflater li = LayoutInflater.from(this);

li.inflate(R.layout.main, tabHost.getTabContentView(), true);

tabHost.addTab(tabHost.newTabSpec("Tab_1").setContent(R.id.tab1)

.setIndicator("TAB1",

this.getResources().getDrawable(R.drawable.img1)));

tabHost.addTab(tabHost.newTabSpec("Tab_2").setContent(R.id.tab2)

.setIndicator("TAB2",

this.getResources().getDrawable(R.drawable.img2)));

tabHost.addTab(tabHost.newTabSpec("Tab_3").setContent(R.id.tab3)

.setIndicator("TAB3",

this.getResources().getDrawable(R.drawable.img3)));

tabHost.setCurrentTab(1);

// tabHost.setBackgroundColor(Color.GRAY);

tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {

public void onTabChanged(String tabId) {

Dialog dialog = new AlertDialog.Builder(Test_TabWidget.this)

.setTitle("提示").setMessage(

"选中了" + tabId + "选项卡").setIcon(R.drawable.icon).setPositiveButton("确定", new DialogInterface.OnClickListener(){

public void onClick(DialogInterface dialog,

int which) {

// TODO Auto-generated method stub

}

}).create();

dialog.show();

}

});

}

}

第二种:就是定义我们自己的tabHost:不用继承TabActivity,具体代码如下:

Java代码




<?xml version="1.0" encoding="utf-8"?>

<TabHost xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/TabHost01" android:layout_width="fill_parent"

android:layout_height="fill_parent">

<LinearLayout android:layout_width="fill_parent"

android:orientation="vertical" android:layout_height="fill_parent">

<TabWidget android:id="@android:id/tabs"

android:layout_width="fill_parent"

android:layout_height="wrap_content" />

<FrameLayout android:id="@android:id/tabcontent"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

<LinearLayout android:id="@+id/LinearLayout1"

android:layout_width="fill_parent"

android:layout_height="wrap_content">

<TextView android:text="one"

android:id="@+id/TextView01" android:layout_width="wrap_content"

android:layout_height="wrap_content">

</TextView>

</LinearLayout>

<LinearLayout android:id="@+id/LinearLayout2"

android:layout_width="wrap_content"

android:layout_height="wrap_content">

<TextView android:text="two"

android:id="@+id/TextView02" android:layout_width="fill_parent"

android:layout_height="wrap_content">

</TextView>

</LinearLayout>

<LinearLayout android:id="@+id/LinearLayout3"

android:layout_width="wrap_content"

android:layout_height="wrap_content">

<TextView android:text="three"

android:id="@+id/TextView03" android:layout_width="fill_parent"

android:layout_height="wrap_content">

</TextView>

</LinearLayout>

</FrameLayout>

</LinearLayout>

</TabHost>

Java代码




package com.Aina.Android;

import android.app.Activity;

import android.os.Bundle;

import android.util.Log;

import android.view.LayoutInflater;

import android.widget.TabHost;

public class Test_TabHost extends Activity {

/** Called when the activity is first created. */

private TabHost tabHost;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

try{

tabHost = (TabHost) this.findViewById(R.id.TabHost01);

tabHost.setup();

tabHost.addTab(tabHost.newTabSpec("tab_1")

.setContent(R.id.LinearLayout1)

.setIndicator("TAB1",this.getResources().getDrawable(R.drawable.img1)));

tabHost.addTab(tabHost.newTabSpec("tab_2")

.setContent(R.id.LinearLayout2).setIndicator("TAB2",

this.getResources().getDrawable(R.drawable.img2)));

tabHost.addTab(tabHost.newTabSpec("tab_3")

.setContent(R.id.LinearLayout3).setIndicator("TAB3",

this.getResources().getDrawable(R.drawable.img3)));

tabHost.setCurrentTab(1);

}catch(Exception ex){

ex.printStackTrace();

Log.d("EXCEPTION", ex.getMessage());

}

}

}

注意:第二种方法时布局文件中的TabWidget的id必须定义
为:android:id="@android:id/tabs",FrameLayout的id必须定义
为:android:id="@android:id/tabcontent" 其它控件没有限制,否则报错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: