APP:ActionBar与Tab应用,即Tab导航栏切换示例(百度词典案例)

 首先对下半部分Fragment进行布局,使其正常显示,例如:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
     android:layout_width="match_parent"
     android:layout_height="match_parent">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/fragment_2"
        android:scaleType="fitXY"
        />
</LinearLayout>
fragment_2.xml

加载布局页面,例如:

public class Fragment2 extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_2,null); //加载布局页面
    }
}
Fragment2.java

然后设置ActionBar为选项卡模式,并将标签页添加到ActionBar中,代码如下:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ActionBar actionBar = getSupportActionBar();
        //actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);  //设置ActionBar为选项卡模式
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        actionBar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);  //隐藏标题栏
        actionBar.addTab(actionBar.newTab().setText("词典"). //将标签页添加ActionBar中
                setTabListener(new MyTabListener(this, Fragment1.class)));
        actionBar.addTab(actionBar.newTab().setText("百科"). //将标签页添加ActionBar中
                setTabListener(new MyTabListener(this, Fragment2.class)));
        actionBar.addTab(actionBar.newTab().setText("翻译").////将标签页添加ActionBar中
                setTabListener(new MyTabListener(this, Fragment3.class)));
        actionBar.addTab(actionBar.newTab().setText("发现").//将标签页添加ActionBar中
                setTabListener(new MyTabListener(this, Fragment4.class)));
        actionBar.addTab(actionBar.newTab().setText("我的").//将标签页添加ActionBar中
                setTabListener(new MyTabListener(this, Fragment5.class)));
    }
MainActivity.java

其中导的包为:

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.ActionBar;
import android.os.Bundle;

 在MyTabListener.java中完成切换页面的动作,代码如下:

import android.app.Activity;
import androidx.appcompat.app.ActionBar;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;


public class  MyTabListener  implements ActionBar.TabListener{
    private Fragment fragment;  //定义Fragment
    private final Activity activity; //定义Activity
    private final Class aClass; //定义Class

    public MyTabListener(Activity activity, Class aClass) { //添加构造函数
        this.activity = activity;
        this.aClass = aClass;
    }
    @Override
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
        //判断碎片是否初始化
        if (fragment == null) { //如果没有初始化,将其初始化
            fragment = Fragment.instantiate(activity, aClass.getName());
            ft.add(android.R.id.content, fragment, null);
        }
        ft.attach(fragment); //显示新画面
    }

    @Override
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
        if (fragment != null) {
            ft.detach(fragment); //删除旧画面
        }
    }

    @Override
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {

    }
}
MyTabListener.java

同样注意导包!!

原文地址:https://www.cnblogs.com/MuZiJin/p/12162020.html