android - 在 android kitkat 中使用新的 IMMERSIVE 模式

标签 android android-view android-4.4-kitkat

我想让一个 Activity 进入 IMMERSIVE 模式,并在它启动后立即隐藏顶部和底部系统栏。

在 android 的开发者网站上,他们说我应该使用 setSystemUiVisibility() 并提供 SYSTEM_UI_FLAG_IMMERSIVESYSTEM_UI_FLAG_HIDE_NAVIGATION

如何在 Activity 的 OnCreate() 方法中执行此操作?我认为 setSystemUiVisibility 未在 Activity 类中提供,它应该发生在 View 中。有解决办法吗?

更新

好的,根据doorstuck,我添加了以下几行,但我没有看到任何变化,导航栏和按钮仍然可见:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (savedInstanceState == null) {
        }
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_IMMERSIVE);
    }

    //Rest of activity code

最佳答案

获取装饰 View :

getWindow().getDecorView().setSystemUiVisibility(...)

请记住,参数是位标志。上面的方法只调用一次:

getWindow().getDecorView().setSystemUiVisibility(
          View.SYSTEM_UI_FLAG_LAYOUT_STABLE
        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
        | View.SYSTEM_UI_FLAG_FULLSCREEN
        | View.SYSTEM_UI_FLAG_IMMERSIVE);

关于android - 在 android kitkat 中使用新的 IMMERSIVE 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21135445/

相关文章:

android - 如果 View 永远不可见,我应该在 View 生命周期的哪个点取消订阅?

java.lang.ClassNotFoundException引起的Android RuntimeException

android - 带有半透明状态栏的叠加操作栏

java - 如何确保我的应用程序的数据在发布更新时不会被删除?

Android Studio ,在 Windows : JAVA_HOME is not set and no 'java' command could be found in your PATH 上

android - 将 Linux 驱动程序迁移到 Android

java - 包裹 android.os.Parcel@72a6e36 : Unmarshalling unknown type code 2131365270 at offset 500

android - 如何在 android 中水平居中对齐 Activity 与对话框主题

java - 有没有办法从 ViewGroup 中删除 View

javascript - 如何在 Android KitKat WebView 中运行 javascript?