Android的Tab控件(一)

Tab控件即标签页,可以在一页中切换显示n页内容,要使用此效果,需要用到TabHost和Tabwidget类。

Tab控件具有两种实现过程,一是在同一个Activity中切换显示不同的标签页,二是每个标签页都由独立的Activity实现。我们首先用第二种方法来实现。


新建一个TabHostActivity,它继承自TabActivity,

public class TabHostActivity extends TabActivity{};


他的布局文件tabhostlayout.xml:

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:id="@android:id/tabhost" > <!--注意这里,id的设置方法跟普通控件不同,必须为tabhost -->
    
    <LinearLayout 
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
        
        <TabWidget <!--TabWidget控件和FrameLayout控件是必须的,分别用来表示标签和标签下面的内容,同样注意其id选项的设置 -->
        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="wrap_content" />
            
       
    </LinearLayout>
    
</TabHost>


 TabHostActivity类的源码:

public class TabHostActivity extends TabActivity{


Intent intent;
TabHost.TabSpec tabSpec;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.tabhostlayout);

Resources res=getResources();

TabHost tabHost=getTabHost();

intent = new Intent(TabHostActivity.this,Tab1Activity.class);
tabSpec = tabHost.newTabSpec("tab1"); //创建一个新的标签页,标记为“tab1”
tabSpec.setIndicator("tab1", res.getDrawable(R.drawable.ic_launcher));//设置tab页的名称和图像表示
tabSpec.setContent(intent);//设置此tab跳转到的Activity
tabHost.addTab(tabSpec);//将此tab加入到tabHost

intent = new Intent(TabHostActivity.this,Tab2Activity.class);
tabSpec=tabHost.newTabSpec("tab2");
tabSpec.setIndicator("tab2", res.getDrawable(R.drawable.ic_launcher));
tabSpec.setContent(intent);
tabHost.addTab(tabSpec);

tabHost.setCurrentTab(1);//设置当期的tab页,从0开始偏移
}


}


然后新建Tab1Activity类,并为其建立布局文件tab1layout.xml,在其中实现tab1页的显示内容

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <TextView 
        android:id="@+id/textView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="this is in tab1 !" />
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="OK" />
</LinearLayout>


同样新建Tab2Activity类,并为其建立布局文件tab2layout.xml,在其中实现tab2页的显示内容

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <EditText 
        android:id="@+id/editText"
        android:layout_width="200dp"
        android:layout_height="wrap_content" />
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="OK" />
</LinearLayout>

将以上三个Activity添加到manifest文件中即可。


另外一种方法中,各tab都在一个Activity中,在下一篇中进行介绍。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章