疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

使用TabHost与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文件。
   下面的的TabWidget  的id为@android:id/tabs",FrameLayout 的id为@android:id/tabcontent"     

    http://schemas.android.com/apk/res/android" _fcksavedurl=">http://schemas.android.com/apk/res/android" 

            android:id="@android:id/tabhost" 

            android:layout_width="fill_parent" 

            android:layout_height="fill_parent"> 

                     android:orientation="vertical" 

                    android:layout_width="fill_parent" 

                    android:layout_height="fill_parent"> 

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

                            android:layout_width="fill_parent" 

                            android:layout_height="wrap_content"/> 

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

                            android:layout_width="fill_parent" 

                            android:layout_height="fill_parent"> 

                                    android:id="@+id/textview1" 

                                    android:layout_width="fill_parent" 

                                    android:layout_height="fill_parent" 

                                    android:text="this is  first Tab "/> 

                                    android:id="@+id/textview2" 

                                    android:layout_width="fill_parent" 

                                    android:layout_height="fill_parent" 

                                    android:text="this is  second Tab"/> 

                                     android:id="@+id/textview3" 

                                    android:layout_width="fill_parent" 

                                    android:layout_height="fill_parent" 

                                    android:text="this is  third Tab"/> 

                > 

     
3:编写对应的Activity代码:    package org.crazyit; 

    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) 

            //其中setContent用于设置该Tab页的内容 

             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();       

                }            

            });        

        }