我必须继承一个自定义主 Activity 类,它是第 3 方库,并且我无法对该类进行任何更改。此类将 FLAG_LAYOUT_IN_SCREEN 添加到窗口,并使应用程序全屏显示。但是,我想阻止这种行为。那么,问题是如何清除/禁用全屏模式并可以显示导航栏/状态栏?
这是自定义的主要 Activity 类
public class CustomActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
setContentView(new FrameLayout(this));
// rest...
}
}
这是我的 Activity 类(class):
public class MyActivity extends CustomActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// tried these attempts below, but none of them prevented
// the fullscreen mode which hides navigation bar and status bar.
this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
}
注意:您还可以在示例应用程序上轻松测试它。您会注意到,添加 FLAG_LAYOUT_IN_SCREEN
后,全屏模式在不同的尝试中也会保持不变。
public class MainActivity extends Activity {
private FrameLayout mainLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().addFlags(FLAG_LAYOUT_IN_SCREEN);
setContentView(new FrameLayout(this));
this.getWindow().clearFlags(FLAG_LAYOUT_IN_SCREEN);
this.getWindow().addFlags(FLAG_KEEP_SCREEN_ON);
}
最佳答案
请对应用应用以下内容,以免全屏显示(显示状态栏)
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
关于android - 在 Android 中设置 FLAG_LAYOUT_IN_SCREEN 后禁用全屏模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64730623/