使FrameLayout匹配根父级

时间:2018-06-27 10:51:35

标签: java android xml

在我的“ MainActivity.java”中,我有一个FrameLayout,所以我可以显示可以在菜单中选择的每个片段。

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

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

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

这是我的frameLayout和所有片段中的底部导航栏

我想在“摄像机”片段中使FrameLayout像这样:

2 个答案:

答案 0 :(得分:0)

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

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 :(得分:0)

在MainActivity中执行此操作 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-然后在onFragmentBackStackChanged上检查当前片段

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

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