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

时间:2016-05-02 14:14:57

标签: android android-fragments android-viewpager android-tablayout

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

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

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

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

这是我的代码。 " sub_fragment_container"存在于xml活动中,因此出现错误java.lang.IllegalArgumentException: No view found for id 0x7f0e00ff (com.my.app:id/sub_fragment_container) for fragment DetailFragment{

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

1 个答案:

答案 0 :(得分:1)

使用android:animateLayoutChanges="true" 或者,为了进一步微调,这是我在我的应用Newslet中亲自使用的经过测试的方法来解决完全相同的问题。

  1. 在AppBarLayout中包装工具栏和TabLayout。如果您了解设计支持库,这应该很容易。如果没有,this应该让你开始。
  2. 在你的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);
    
  3. 在此之后,当您删除选项卡或将其添加回来时,布局更改将平滑动画。

    希望这有助于你!