在现有的碎片上叠加一个碎片



我有一个TabLayoutTabHost的设计,无论你想要考虑。假设这是制表符

Tab1 | Tab2 | Tab3 | Tab4 | Tab5

下面的动作将会发生-

  1. Tab1 -打开Fragment1
  2. Tab2 -打开Fragment2
  3. Tab3 -打开覆盖在现有的片段与半透明的黑色视图
  4. Tab4 -打开Fragment3
  5. Tab5 -打开Fragment4

你知道怎么解决这个问题吗?提前感谢!!

UPDATE: Solution I used

我试过这个,但不得不做很多定制。所以我中途停了下来,因为工作量太大了。所以我做的另一种方法是,我在TabLayout上放置了一个视图,与Tab3完全相同的位置,点击View,我使覆盖视图可见。

ViewPager不是为这个用例设计的。制表符自动映射到ViewPager中相应的元素。但我认为这是可行的。

  1. 有一个TranslucentOverlayViewVisibility.GONE覆盖你的整个ViewPager
  2. 让tab3打开fragment2的复制克隆,当tab3被选中时,使TranslucentOverlayView可见。这确实意味着你将有两个单独的fragment2实例并排。

正如@ZakTaccardi所说,ViewPager不是为此而设计的。

然而,我会尝试创建一个5页的FragmentPagerAdapter。我的意思是,getCount()应该返回5。如果当前索引为2,则应该返回当前在屏幕上的实例。这意味着,适配器应该知道当前页面是什么。您可以使用ViewPageronPageChangeListener让适配器知道当前页面是什么。使用FragmentManager检索实例。不要在适配器中存储对fragment的引用,因为这会导致内存泄漏。当你选择tab 3时,这是为了防止重复的片段。

要显示叠加,在ViewPager之上实现View,并在ViewPageronPageSelected()回调中显示它,当位置为2时。2.

最新更新