在我的“ MainActivity.java”中,我有一个FrameLayout,所以我可以显示可以在菜单中选择的每个片段。
在FrameLayout之后,我还有一个底部导航栏,与所有菜单相同。在那些菜单“相机”中,我使用一个库打开相机,并隐藏底部的导航栏,以便用户以“沉浸式”模式查看相机。
我的问题是,如何在单击“相机”时将片段设置为与“ MainActivity”而不是FragmentLayout匹配?
换句话说,是否有一种方法可以使FrameLayout的高度与“ MainActivity”相匹配,而不是自定义高度? 我不知道我是否清楚,所以这里有一些照片:
这是我的frameLayout和所有片段中的底部导航栏
我想在“摄像机”片段中使FrameLayout像这样:
答案 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)
}
}
实际上,这将始终跟踪当前片段,因此它将根据您当前的片段显示和隐藏视图。