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

    同样注意导包!!

  • 相关阅读:
    C#操作Word (2)-- 打开&关闭Word文档
    JS input 银行卡号格式转换
    解决H5在微信浏览器或QQ浏览器修改title的问题
    CSS
    Atom 编辑器使用和学习
    php的一个小坑,输出不了json_encode
    js 组合键监听ctrl + enter
    webpack3.0 环境搭建
    css 使表格随着内容自动适应宽度
    获取input光标的x和y轴
  • 原文地址:https://www.cnblogs.com/MuZiJin/p/12162020.html
Copyright © 2011-2022 走看看