这是我的问题:我有一个Android应用程序,允许用户全屏显示,以提高可读性。全屏fab切换按钮放置在实际上包含读数的片段内。
使它变得简单:
要触发全屏,请使用以下代码段:
this.fullScreenFab.setOnClickListener(v -> {
WindowManager.LayoutParams attrs = getActivity().getWindow().getAttributes();
if (this.isFullScreen) {
this.isFullScreen = false;
((AppCompatActivity)
getActivity()).getSupportActionBar().show();
getActivity().getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
} else {
this.isFullScreen = true;
((AppCompatActivity) getActivity()).getSupportActionBar().hide();
getActivity().getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LOW_PROFILE
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
}
getActivity().getWindow().setAttributes(attrs);
});
Run Code Online (Sandbox Code Playgroud)
现在,它可以很好地工作,除了状态栏和操作栏的空间一直显示。该活动进入FS(甚至Android对此也发出警告),但是仍然保留了这两个元素所占用的空间。
如您所见,FS占据了顶部和底部,因此该片段并没有真正的全屏显示。
片段具有
android:fitsSystemWindows="true"
Run Code Online (Sandbox Code Playgroud)
请发送帮助!提前致谢。瓦列里奥
Rai*_*ker 11
您应尝试使用此标志,因为它旨在删除状态栏和导航。
getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
Run Code Online (Sandbox Code Playgroud)
注意:您需要在切换或关闭片段时手动清除它。否则,该全屏显示将一直适用,直到父活动存在为止。为此,
getActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
Run Code Online (Sandbox Code Playgroud)
另外,您可以使用FLAG_FULLSCREEN。使用它可以有效地设置透明的通知栏,但状态栏上的图标仍会显示。
科特林
在onViewCreated()使片段全屏
requireActivity().window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
Run Code Online (Sandbox Code Playgroud)
在onDetach()以全屏清晰的标志,这样就不会影响到其他片段,该片段是在活动开启
requireActivity().window.clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
Run Code Online (Sandbox Code Playgroud)
--x--x--x--x--x--x--x--x--x--
爪哇
在onViewCreated()使片段全屏
requireActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
Run Code Online (Sandbox Code Playgroud)
在onDetach()以全屏清晰的标志,这样就不会影响到其他片段,该片段是在活动开启
requireActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4767 次 |
| 最近记录: |