Android 之 TabWidget

    Android 的联系人就是TabWidget的一个典型的应用。当用户需要用到多页的时候,TabWidget是一个非常好的选择。

 

    首先要实现这一效果,首先要了解TabHost,它是一个用来存放多个Tab标签的容器。每一个Tab都可以对应自己的布局,比如,电话薄中的TAB布局就是一个List线性布局了。

     要使用TabHost,必须通过TabActivity中的getTabHost方法来获取TabHost的对象,然后通过addTab的方法来向TabHost添加Tab,也就是添加一个新的标签页。Tab标签在切换的时候都会产生一个事件,可以通过TabActivity的事件监听setOnTabChangeListener.也可以设置默认的标签页:setCurrentTab(int index);index是添加的标签的索引,以0为开始。

   下面就以一个Demo为例子。

 

1:新建一个TabWidgetDemo工程。

2:修改Layout 的main.xml文件。

   <?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" 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"> <TextView android:id="@+id/textview1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="this is first Tab "/> <TextView android:id="@+id/textview2" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="this is second Tab"/> <TextView android:id="@+id/textview3" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="this is third Tab"/> </FrameLayout> </LinearLayout>> </TabHost>

 

3:修改源文件。

 

 

package com.rocky.studio.ch435; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.TabActivity; import android.content.DialogInterface; import android.graphics.Color; import android.os.Bundle; import android.widget.TabHost; import android.widget.TabHost.OnTabChangeListener; public class TabWidgetDemo extends TabActivity { private TabHost mTabHost; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //取得TabHost对象 mTabHost=this.getTabHost(); //为TabHost添加标签 //新建一个newTabSpec(newTabSpec) //设置其标签和图标(setIndicator) //设置内容 mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("TAB 1",getResources().getDrawable(R.drawable.img1)).setContent(R.id.textview1)); mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("TAB 2",getResources().getDrawable(R.drawable.img2)).setContent(R.id.textview2)); mTabHost.addTab(mTabHost.newTabSpec("tab_test3").setIndicator("TAB 3",getResources().getDrawable(R.drawable.img3)).setContent(R.id.textview3)); mTabHost.setBackgroundColor(Color.argb(150, 22, 70, 150)); mTabHost.setCurrentTab(0); mTabHost.setOnTabChangedListener(new OnTabChangeListener() { @Override public void onTabChanged(String arg0) { // TODO Auto-generated method stub Dialog dialog=new AlertDialog.Builder(TabWidgetDemo.this) .setTitle("提示") .setMessage("当前选中:"+arg0+"标签") .setPositiveButton("点击确定",new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.cancel(); } } ).create();//创建按钮 dialog.show(); } }); } }

 

 

 

4:这个控件可以玩出很多的花样。大家可以多试试。

你可能感兴趣的:(Android 之 TabWidget)