Android选项卡TabHost方式实现

1.布局XML:

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@android:id/tabhost">
    <RelativeLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <TextView 
            android:id="@+id/bottomtip"
            android:layout_width="match_parent"
            android:layout_height="50dp"            
            android:text="@string/funPageBtn2" 
            android:gravity="center_horizontal|center_vertical" 
            android:layout_alignParentTop="true"
            android:textColor="@android:color/white"
            android:background="@android:color/black" 
        />
        <FrameLayout 
            android:id="@android:id/tabcontent"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_above="@android:id/tabs"
            android:layout_below="@+id/bottomtip"
        />
        <TabWidget 
            android:id="@android:id/tabs"   
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:background="@android:color/black" 
        />        
    </RelativeLayout>

</TabHost>

布局效果理解:

2.Activity类实现

package com.test.appdemo1.actlearn;

import com.test.appdemo1.R;

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 TabOptTopAct extends TabActivity {

    private TabHost tabHost;    
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tabtoplayout);
        initTab();
    }

    private void initTab() {
        tabHost = getTabHost();
        TabSpec tabSpec = null;
        Intent  intent = new Intent(this,MainActivity.class);
        //第一个        
        tabSpec = tabHost.newTabSpec("tab1")
                .setIndicator("首页",getResources().getDrawable(R.drawable.home))
                .setContent(intent);
        tabHost.addTab(tabSpec);
        
        //第二个        
        intent = new Intent(this,NextActivity.class);
        tabSpec = tabHost.newTabSpec("tab2")
                .setIndicator("邮件",getResources().getDrawable(R.drawable.mail))
                .setContent(intent);
        tabHost.addTab(tabSpec);
        
        //第三个    
        intent = new Intent(this,ServiceActDemo.class);
        tabSpec = tabHost.newTabSpec("tab3")
                .setIndicator("音乐",getResources().getDrawable(R.drawable.music))
                .setContent(intent);
        tabHost.addTab(tabSpec);
        
        //第四个    
        intent = new Intent(this,FrameLearnLayoutAct.class);
        tabSpec = tabHost.newTabSpec("tab4")
                .setIndicator("计算",getResources().getDrawable(R.drawable.calc))
                .setContent(intent);
        tabHost.addTab(tabSpec);
        
        tabHost.setCurrentTab(1);
    }
    
    public void onBackPressed() {
        super.onBackPressed();
        finish();
    }
}

最后说明:如果想把选项卡放到顶部只需修改布局文件中RelativeLayout里面的三个元素的位置

若有问题请大家指正.

程序运行效果如上图片所示.

原文地址:https://www.cnblogs.com/coacaio/p/3577646.html