我在一个活动中设置了一个ViewPager和FragmentPagerAdapter,其中包含3个片段.所有片段同时加载并使用保存在内存中
mPager.setOffscreenPageLimit(2);
Run Code Online (Sandbox Code Playgroud)
其中一个片段包含我想要全屏显示的相机预览,没有状态栏或操作栏.其他片段要求显示操作栏.
如何在保持其他两个片段正常的同时,仅将相机预览片段全屏制作?我尝试过使用主题,这意味着打破了操作栏.
以编程方式调用以下内容没有帮助,因为它强制整个活动全屏(因此其他两个片段随之而来):
requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
Run Code Online (Sandbox Code Playgroud)
我也尝试过实现ViewPager.OnPageChangeListener:
public void onPageSelected(int position) {
if(position == 1)
getActionBar().hide();
else
getActionBar().show();
}
Run Code Online (Sandbox Code Playgroud)
这确实隐藏了操作栏,但它没有隐藏系统状态栏(我正在谈论通知,状态图标和时间的位置),并且操作栏隐藏/显示动画在滑动时也非常不连贯.
有关我想要做的事情的一个例子,请参阅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);
}
}
Run Code Online (Sandbox Code Playgroud)
这使我可以更改状态栏是否显示.但是,它会引起大量的猛击.操作栏的问题相同.
我注意到在Snapchat中状态栏在标签更改完成后上下滑动.我不确定如何实现这一点,所以有关这方面的任何建议将不胜感激.