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没背景,当然能看到后面了,如果没有点击事件还能点到后面呢,不信你试试

    评论

报告相同问题?

悬赏问题

  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R
  • ¥15 在线请求openmv与pixhawk 实现实时目标跟踪的具体通讯方法
  • ¥15 八路抢答器设计出现故障