weixin_44269571 2019-07-20 12:21 采纳率: 50%
浏览 651

如何让fragment能完全覆盖活动的View?

如题,我想实现的是用fragment实现侧滑菜单按钮的页面切换,但是我的fragment无法覆盖完全覆盖mainactivity的布局。如图mainactivity的两个button仍然显示
图片说明

图片说明

下面是我实现fragment切换的代码

//Fragment初始化
    private void initFragment() {
        fragment0 = new Blank_Fragment();
        fragment1 = new AboutUs_Fragment();
        fragment2 = new Help_Fragment();
        fragments = new Fragment[]{fragment0,fragment1,fragment2};
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        transaction.replace(R.id.activity_main,fragment0);
        transaction.addToBackStack(null);
        transaction.commit();//    使transaction生效
        navView = (NavigationView) findViewById(R.id.nav_view);
        navView.setNavigationItemSelectedListener(changeFragment);
    }


    //判断选择的菜单
    private NavigationView.OnNavigationItemSelectedListener changeFragment= new NavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId())
            {
                case R.id.nav_AboutUs:
                    if(lastfragment!=1) {
                        switchFragment(lastfragment,1);
                        lastfragment=1;
                        mDrawerLayout.closeDrawers();
                    }
                    return false; //点击后不会默认选中了
                case R.id.nav_Help:
                    if(lastfragment!=2){
                        switchFragment(lastfragment,2);
                        lastfragment=2;
                        mDrawerLayout.closeDrawers();
                    }
                    return false;
            }
            return false;
        }
    };

    //切换Fragment
    private void switchFragment(int lastfragment,int index)
    {
        FragmentTransaction transaction =getSupportFragmentManager().beginTransaction();
        transaction.hide(fragments[lastfragment]);//隐藏上个Fragment
        if(!fragments[index].isAdded()){
            transaction.add(R.id.activity_main,fragments[index]);
        }
        transaction.show(fragments[index]).commitAllowingStateLoss();
    }


下面是fragment的布局文件
图片说明

  • 写回答

2条回答 默认 最新

  • 王能 2019-07-29 18:18
    关注

    你的Fragment没背景,当然能看到后面了,如果没有点击事件还能点到后面呢,不信你试试

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?