• 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

    同样注意导包!!

  • 相关阅读:
    通过python来获取网页状态
    php多域名跳转nginx
    mybatis-plus主键策略
    mybatis-plus ActiveRecord模式
    mybatis-plus-Cud操作
    mybatis-plus高级操作
    mybatis-plus入门
    ☕【Java技术指南】「序列化系列」深入挖掘FST快速序列化压缩内存的利器的特性和原理
    虚拟机研究系列-「GC本质底层机制」SafePoint的深入分析和底层原理探究指南
    👊 Spring技术原理系列(7)带你看看那些可能你还不知道的Spring特性技巧哦!
  • 原文地址:https://www.cnblogs.com/MuZiJin/p/12162020.html
Copyright © 2020-2023  润新知