如何在更改全屏/底部导航时使用导航组件导航主机片段

问题描述 投票:6回答:1

我将单个活动多片段与导航组件一起使用。如何隐藏某些片段的底部导航栏?

我尝试了以下操作:

1-通过数据绑定控制底部导航栏的可见性。(越野车)2-在打开片段之前和在后堆栈上切换底部导航可见性(越野车)3-使2个主机片段1全屏显示1受底部导航约束4-制作2个航海图..

activity_main.xml:

      <com.google.android.material.bottomnavigation.BottomNavigationView
            android:id="@+id/bottomNavigation"
            android:visibility="@{viewModel.uiUtils.shouldShow ? View.VISIBLE:View.GONE}"/>

mainactivity.java:

    private void observeShouldShow() {
        mainViewModel.uiUtils.getShouldShow().observe(this, new Observer<Boolean>() {
            @Override
            public void onChanged(Boolean aBoolean) {
                ViewGroup.LayoutParams layoutParams = binding.bottomNavigation.getLayoutParams();
                if (mainViewModel.getUiUtils().getShouldShow().getValue()) {
                    binding.bottomNavigation.setVisibility(View.VISIBLE);

                    layoutParams.height = 170;
                    binding.bottomNavigation.setLayoutParams(layoutParams);
                } else {
                    layoutParams.height = 0;
                    binding.bottomNavigation.setLayoutParams(layoutParams);

                 binding.bottomNavigation.setVisibility(View.INVISIBLE);
                }
            }
        });

在全屏片段和普通片段之间切换时,底部导航栏闪烁

java android android-architecture-components
1个回答
0
投票

官方文档建议使用OnDestinationChangedListener处理此问题。 Look here.

© www.soinside.com 2019 - 2024. All rights reserved.