Android:从其中一个viewPager选项卡片段启动片段时隐藏viewPager选项卡

Android:从其中一个viewPager选项卡片段启动片段时隐藏viewPager选项卡,android,android-fragments,android-viewpager,android-tablayout,Android,Android Fragments,Android Viewpager,Android Tablayout,我的应用程序中有一个viewPager,它有几个选项卡。在某些选项卡中,单击一个项目时,会显示一个新片段。我想要这个片段覆盖标签。这样做是可能的,但这些方法在我看来并不好 1.)一种方法是使用getSupportFragmentManager()将新创建的片段添加到活动中。这解决了问题,但看起来不是一个好主意,因为它会在使用后退按钮等时产生问题 2.)另一种方法是使用Visibility手动隐藏选项卡。GONE但这种方法的问题是隐藏选项卡是可见的,我的意思是可以看到动画,而且看起来很糟糕 有没有

我的应用程序中有一个viewPager,它有几个选项卡。在某些选项卡中,单击一个项目时,会显示一个新片段。我想要这个片段覆盖标签。这样做是可能的,但这些方法在我看来并不好

1.)一种方法是使用
getSupportFragmentManager()
将新创建的片段添加到活动中。这解决了问题,但看起来不是一个好主意,因为它会在使用后退按钮等时产生问题

2.)另一种方法是使用Visibility手动隐藏选项卡。GONE但这种方法的问题是隐藏选项卡是可见的,我的意思是可以看到动画,而且看起来很糟糕

有没有更好的方法来解决这个问题

这是我的密码。活动xml中存在“
sub_fragment_container
”,因此我得到一个错误
java.lang.IllegalArgumentException:未找到片段详细信息片段{
id 0x7f0e00ff(com.my.app:id/sub_fragment_container)的视图

FragmentTransaction fragmentTransaction = getChildFragmentManager()
                        .beginTransaction();
                Fragment profileFragment = new DetailFragment();
                profileFragment.setArguments(bundle);
                fragmentTransaction
                        .add(R.id.sub_fragment_container, profileFragment);
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.commit();

使用android:animateLayoutChanges=“true” 或者,为了进一步调整,这里有一个经过测试的方法,我个人在我的应用程序中使用过,来解决完全相同的问题

  • 在AppBarLayout中包装工具栏和表格布局。如果您了解设计支持库,这应该很容易。如果不了解,应该可以开始
  • 在onCreate()中添加这段代码:

  • 在此之后,当您删除或重新添加选项卡时,布局更改将平滑地设置动画


    希望这对您有所帮助!

    非常感谢您花时间回复。如果有效,我将尝试并接受!!
    LayoutTransition layoutTransition = new LayoutTransition();
    layoutTransition.setDuration(200);
    layoutTransition.setStartDelay(LayoutTransition.CHANGE_APPEARING, 0);
    layoutTransition.setStartDelay(LayoutTransition.APPEARING, 0);
    layoutTransition.setStartDelay(LayoutTransition.DISAPPEARING, 0);
    layoutTransition.setStartDelay(LayoutTransition.CHANGE_DISAPPEARING, 0);
    
    appBarLayout.setLayoutTransition(layoutTransition);