我在一个包含 3 个片段的活动中设置了 ViewPager 和 FragmentPagerAdapter。所有片段同时加载并使用
mPager.setOffscreenPageLimit(2);
其中一个片段包含一个我想全屏显示的相机预览,没有状态栏或操作栏。其他片段需要显示操作栏。
如何在保持其他两个片段正常的同时仅使相机预览片段全屏?我尝试过使用主题,这意味着打破操作栏。
以编程方式调用以下内容并没有帮助,因为它会强制整个活动全屏显示(因此还有其他两个片段):
requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
我还尝试实现 ViewPager.OnPageChangeListener:
public void onPageSelected(int position) {
if(position == 1)
getActionBar().hide();
else
getActionBar().show();
}
这确实隐藏了操作栏,但并没有隐藏系统状态栏(我说的是通知、状态图标和时间在哪里),并且操作栏隐藏/显示动画在滑动时也很不稳定。
有关我想要做什么的示例,请参阅 Snapchat - 他们设法完美地完成了相机和其他片段之间的滑动。
编辑:
所以我将我的 onPageSelected 更改为:
public void onPageSelected(int position) {
if(position == 1) {
MainActivity.this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
MainActivity.this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
} else {
MainActivity.this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
MainActivity.this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
}
}
这使我能够更改是否显示状态栏。但是,它会导致大量的卡顿。操作栏也有同样的问题。
我注意到在 Snapchat 中,标签更改完成后状态栏会上下滑动。我不确定如何实现这一点,因此我们将不胜感激有关这方面的任何建议。