相关疑难解决方法(0)

以编程方式全屏制作片段

我在一个活动中设置了一个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中状态栏在标签更改完成后上下滑动.我不确定如何实现这一点,所以有关这方面的任何建议将不胜感激.

android android-fragments android-actionbar

22
推荐指数
1
解决办法
4万
查看次数