android - 在 Android 中设置 FLAG_LAYOUT_IN_SCREEN 后禁用全屏模式

标签 android android-layout android-window

我必须继承一个自定义主 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/

相关文章:

Android 以编程方式设计布局

Android ListView 不滚动

android - 使用weightsum调整布局?

android - 有没有办法以编程方式定位给定应用程序中的所有 Windows?

java - 如何创建像 Clipboard Pro App 这样的 float 窗口?

不支持 Android Linkify 电子邮件

java - Camera2 api 将相机切换为正常和黑白

android - 玩游戏 loadLeaderboardMetadata() 返回过时的数据

android - 获取在当前 Activity 中可见的任何 AlertDialog 实例的 View 对象 (Android)

android - 如何使用具有唯一 API key 的多个 Google API