Android应用中使用TabHost组件继承TabActivity的布局方法

使用TabHost组件继承TabActivity的布局方法可以让我们在Android应用中快速实现底部切换页面的功能。下面我将详细讲解完整攻略。

使用TabHost组件继承TabActivity的布局方法可以让我们在Android应用中快速实现底部切换页面的功能。下面我将详细讲解完整攻略。

准备工作

在使用TabHost组件之前,需要先引入相应的库。在build.gradle文件中添加以下依赖:

dependencies{
    implementation 'com.android.support:appcompat-v7:28.0.0'
}

布局

在布局文件中添加TabHost组件,并设置子标签

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TabHost
        android:id="@android:id/tabhost"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="match_parent"
                android:background="#FFFFFF"
                android:layout_height="0dp"
                android:layout_weight="1"/>

            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="match_parent"
            android:layout_height="wrap_content"/></LinearLayout>

    </TabHost>
</RelativeLayout>

继承TabActivity

为了让TabHost组件能够正常使用,需要继承自TabActivity。在Java文件中添加以下代码:

public class MainActivity extends TabActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //初始化TabHost
        TabHost tabHost = getTabHost();

        //创建第一个Tab并添加到TabHost中
        TabHost.TabSpec tab1 = tabHost.newTabSpec("Tab1")
                .setIndicator("Tab1")
                .setContent(new Intent(this, TabActivity1.class));
        tabHost.addTab(tab1);

        //创建第二个Tab并添加到TabHost中
        TabHost.TabSpec tab2 = tabHost.newTabSpec("Tab2")
                .setIndicator("Tab2")
                .setContent(new Intent(this, TabActivity2.class));
        tabHost.addTab(tab2);
    }
}

示例

以两个TabActivity为例,分别实现两个Tab标签的功能。

TabActivity1

public class TabActivity1 extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tab1);
        TextView textView = findViewById(R.id.text1);
        textView.setText("这是第一个Tab的内容");
    }
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView 
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</RelativeLayout>

TabActivity2

public class TabActivity2 extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tab2);
        TextView textView = findViewById(R.id.text2);
        textView.setText("这是第二个Tab的内容");
    }
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView 
        android:id="@+id/text2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</RelativeLayout>

在TabActivity的onCreate方法中,通过TabHost.TabSpec来创建每一个Tab。其中,setIndicator中传入的字符串为Tab上显示的文本。setContent中传入的Intent则是该Tab所对应的Activity(即标签被点击后显示的内容)。每个Tab中可以放置任意布局。

完成以上步骤后,就可以成功使用TabHost组件继承TabActivity的布局方法了。

本文标题为:Android应用中使用TabHost组件继承TabActivity的布局方法

基础教程推荐