[mobilesafe] 10_选项卡TableHost-TableActivity切换效果实现

Android 4.0

选项卡切换效果实现 TableHost-TableActivity

1、利用FrameLayout  然后利用代码控制
2、使用fragment
3、TabHost组件,已废弃掉,但还有很多公司用
TabHost
1、TabHost要一个固定的id,android:id="@android:id/tabhost"
2、必须要有TabWidget,且id固定为android:id="@android:id/tabs"
3、必须要有FrameLayout,且id固定为android:id="@android:id/tabcontent"
4、Activity还要继承TabActivity
TabHost组件演示:
1、布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <TabHost
        android:id="@android:id/tabhost"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="match_parent"
                android:layout_height="50dip"
                android:layout_alignParentBottom="true"> 选项卡显示在下面
            </TabWidget>

            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginBottom="50dip" >
            </FrameLayout>

        </RelativeLayout>
    </TabHost>
</LinearLayout>
2、代码实现
package cn.zengfansheng.tabhost;
import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;
@SuppressWarnings("deprecation")
public class TabHostActivity extends TabActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tabhost);
        TabHost tabHost = getTabHost();
        // 这个tag1,tag2,tag3是给程序员看的,在界面上没有
        TabSpec tab1 = tabHost.newTabSpec("tag1");
        TabSpec tab2 = tabHost.newTabSpec("tag2");
        TabSpec tab3 = tabHost.newTabSpec("tag3");
        // 每一个tab(标签,选项卡)名字
        tab1.setIndicator("tabel1");
        tab2.setIndicator("tabel2");
        tab3.setIndicator("tabel3");
        
        // 每一个tab(标签,选项卡)中显示的内容
        tab1.setContent(new Intent(getApplicationContext(), Test1Activity.class));
        tab2.setContent(new Intent(getApplicationContext(), Test2Activity.class));
        tab3.setContent(new Intent(getApplicationContext(), Test3Activity.class));
        // 将每一个tab加入到tabHost中去
        tabHost.addTab(tab1);
        tabHost.addTab(tab2);
        tabHost.addTab(tab3);
    }
}
问题:


这是由于TabHost没有设置id
问题2:
这是由于tab1已经设置了,多次设置出现的问题
tab1.setContent(new Intent(getApplicationContext(), Test1Activity.class));
tab1.setContent(new Intent(getApplicationContext(), Test2Activity.class));
tab1.setContent(new Intent(getApplicationContext(), Test3Activity.class));