我有一个TabLayout
或TabHost
的设计,无论你想要考虑。假设这是制表符
Tab1 | Tab2 | Tab3 | Tab4 | Tab5
下面的动作将会发生-
- Tab1 -打开Fragment1
- Tab2 -打开Fragment2
- Tab3 -打开覆盖在现有的片段与半透明的黑色视图
- Tab4 -打开Fragment3
- Tab5 -打开Fragment4
你知道怎么解决这个问题吗?提前感谢!!
UPDATE: Solution I used
我试过这个,但不得不做很多定制。所以我中途停了下来,因为工作量太大了。所以我做的另一种方法是,我在TabLayout
上放置了一个视图,与Tab3完全相同的位置,点击View
,我使覆盖视图可见。
ViewPager
不是为这个用例设计的。制表符自动映射到ViewPager
中相应的元素。但我认为这是可行的。
- 有一个
TranslucentOverlayView
有Visibility.GONE
覆盖你的整个ViewPager
。 - 让tab3打开
fragment2
的复制克隆,当tab3
被选中时,使TranslucentOverlayView
可见。这确实意味着你将有两个单独的fragment2
实例并排。
正如@ZakTaccardi所说,ViewPager
不是为此而设计的。
然而,我会尝试创建一个5页的FragmentPagerAdapter
。我的意思是,getCount()
应该返回5。如果当前索引为2,则应该返回当前在屏幕上的实例。这意味着,适配器应该知道当前页面是什么。您可以使用ViewPager
和onPageChangeListener
让适配器知道当前页面是什么。使用FragmentManager
检索实例。不要在适配器中存储对fragment的引用,因为这会导致内存泄漏。当你选择tab 3时,这是为了防止重复的片段。
要显示叠加,在ViewPager
之上实现View
,并在ViewPager
的onPageSelected()
回调中显示它,当位置为2时。2.