zoukankan      html  css  js  c++  java
  • 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

    同样注意导包!!

  • 相关阅读:
    利用LibreOffice进行WORD转PDF
    SpringBoot实践
    Solr学习笔记(一)
    HashMap原理(转)
    PDF.js展示本地文件
    设计模式之代理模式
    (一)DUBBO基本学习
    如何架构一个框架
    冒泡排序
    js 函数传数组参数
  • 原文地址:https://www.cnblogs.com/MuZiJin/p/12162020.html
Copyright © 2011-2022 走看看