Android实现底部选项卡

昨天使用TabHost+java代码简单的实现了顶部导航栏,那么今天我要实现安卓底部导航栏。相比之下,底部导航栏用的很多,QQ、微信、支付宝等,都是通过底部的导航栏来实现页面的切换的。所以学好这个UI布局还是很必要的。这里仅以两个选项卡为例子。

效果图:
Android实现底部选项卡_第1张图片
Android实现底部选项卡_第2张图片

这次用到的代码最多的是XML(其id设置很重要),Activity的数量为你想设置标签页数+1.因为他们需要一个公用的页面充当容器,放置你的选项卡(本例子我以activity_main为中转站的xml ,MainActivity为中转站的后台)。

main_activity:

   
    <TabHost
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@android:id/tabhost"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.administrator.one_tabhost.MainActivity">
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
        FrameLayout>
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <TabWidget
                android:id="@android:id/tabs"
                android:tabStripEnabled="true"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                >
            TabWidget>
        RelativeLayout>
    TabHost>

这里有几个重要的点:

  1. Tabhost、FrameLayout、RelativeLayout为占满全部屏幕
  2. Tabhost、FrameLayout、TabWidget其id为固定死的,如果记不住Android Studio有相应的报错
    Tabhost
    Android实现底部选项卡_第3张图片
    FrameLayout
    Android实现底部选项卡_第4张图片

TabWidget
Android实现底部选项卡_第5张图片

另外两个布局文件便可以任意设置即可。

Java:

   import android.app.TabActivity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.widget.TabHost;
    
    public class MainActivity extends TabActivity {
        public TabHost tabHost;
        public Intent one,two;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            tabHost = getTabHost();
    
            one = new Intent(MainActivity.this,one.class);
            tabHost.addTab(tabHost.newTabSpec("one").setIndicator("第一页").setContent(one));
    
            two = new Intent(MainActivity.this,two.class);
            tabHost.addTab(tabHost.newTabSpec("two").setIndicator("第二页").setContent(two));
    
        }
    }

同样,另外两个java文件可任意填写。

这里用到的类似于界面跳转的原理,如此便完成的底部选项卡的目的。

你可能感兴趣的:(Android布局)