Java 使FrameLayout与根父级匹配

Java 使FrameLayout与根父级匹配,java,android,xml,Java,Android,Xml,在我的“MainActivity.java”中,我有一个框架布局,因此我可以显示菜单中可以选择的每个片段 在FrameLayout之后,我还有一个与所有菜单相同的底部导航栏。在其中一个菜单“Camera”中,我使用库打开相机,隐藏底部导航栏,以便用户可以在“沉浸模式”中看到相机 我的问题是,在点击“camera”时,我如何将片段设置为与“MainActivity”匹配,而不是与FragmentLayout匹配 换句话说,有没有办法使FrameLayout的高度与“MainActivity”匹配,

在我的“MainActivity.java”中,我有一个框架布局,因此我可以显示菜单中可以选择的每个片段

在FrameLayout之后,我还有一个与所有菜单相同的底部导航栏。在其中一个菜单“Camera”中,我使用库打开相机,隐藏底部导航栏,以便用户可以在“沉浸模式”中看到相机

我的问题是,在点击“camera”时,我如何将片段设置为与“MainActivity”匹配,而不是与FragmentLayout匹配

换句话说,有没有办法使FrameLayout的高度与“MainActivity”匹配,而不是与自定义的高度匹配? 我不知道我是否清楚,所以这里有一些照片:

这是我的框架布局和所有片段中的底部导航栏

我想在“摄影机”片段中制作如下的帧布局:

调用启动相机的片段时,请尝试以下操作:

BottomNavigationView navigation = findViewById(R.id.navigation);
                navigation.setVisibility(View.GONE);
并将其放入相机启动的活动中:

public void onBackPressed() {
Intent intent = new Intent(getApplicationContex(), MainActivity.class);
startActivity(intent);
    BottomNavigationView navigation = findViewById(R.id.navigation);
    navigation.setVisibility(View.VISIBLE);
        super.onBackPressed();
    }

在主活动中,请执行此操作 1-替换片段时,始终保存片段

  private Fragment mCurrentFragment;

 public void addFragment(MyBaseFragment f, boolean clearBackStack, 

        android.support.v4.app.FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        transaction.add(R.id.fragment_container, f);
        if (addToBackstack) {
            transaction.addToBackStack(null);
        }
        transaction.commit();

        mCurrentFragment = f;
        mFragments.push(f);

        onFragmentBackStackChanged();
    }
2-然后在OnFragmentBackbackChanged上检查当前片段

@Override
    public void onFragmentBackStackChanged() {
        super.onFragmentBackStackChanged();
if(mCurrentFragment instanof CameraFragment){
bottomView.setvisibility(View.Gone)
}else{
bottomView.setvisibility(View.Visible)
}
}

实际上,这将始终跟踪当前片段,因此它将根据当前片段显示和隐藏视图。

您可以在新活动中启动摄影机,而不是将其嵌入片段中。我已经想到了这一点,但时间上存在很大差异。活动需要生命来开启。片段是即时的您可以在
main activity
中的另一个容器中加载相机片段,该容器具有完整的高度和宽度,并且有背景,您可以在完成后删除片段,但是当用户返回到另一个菜单项时,如何使菜单再次出现?谢谢。我想知道的是,在风景消失后,它还能再出现吗?我认为只有当它“不可见”时,它才能再次可见我的第一个代码你在调用启动相机的片段时将其添加到main活动中,我的第二个代码你将其添加到启动相机的片段中,因此当你离开相机到main时,将再次出现底部导航。