android - 在 React Native 中隐藏 Android 导航栏

标签 android react-native navigationbar

如何隐藏 Android Navigation Bar在 React Native 中?

我指的是屏幕底部带有软件后退按钮和主页按钮的栏,而不是页面顶部随导航器组件一起提供的组件。

Android Navigation Bar

This page on android.com解释了如何为原生开发者做这件事。有人可以解释如何通过 React Native 应用程序完成此操作吗?谢谢。

最佳答案

如果您希望永久实现此目的,则必须在应用创建时以及它重新获得焦点时隐藏导航栏。

为此,在您的 MainActivity.java 中添加:

...
import android.os.Bundle;
import android.view.View;

public class MainActivity extends ReactActivity {

    ...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        hideNavigationBar();
    }

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if (hasFocus) {
            hideNavigationBar();
        }
    }

    private void hideNavigationBar() {
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
    }
}

您可能希望使其“沉浸式”,以便用户仍然可以通过从屏幕底部拉动来访问导航栏。 为此,添加 View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY 标志:

...
import android.os.Bundle;
import android.view.View;

public class MainActivity extends ReactActivity {

    ...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        hideNavigationBar();
    }

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if (hasFocus) {
            hideNavigationBar();
        }
    }

    private void hideNavigationBar() {
        getWindow().getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

    }
}

您可以在 android documentation 上找到更多选项.

关于android - 在 React Native 中隐藏 Android 导航栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36046055/

相关文章:

android - 通过网站将图片发布到 instagram

android - 防止 EditText 在软键盘的“下一步”按钮单击上获得焦点

javascript - setState(…) : Can only update a mounted or mounting component. 这通常意味着您在未安装的组件上调用了 setState()。这是一个空操作

ios - 我不能在 Storyboard 中同时将标题和图像设置到导航栏上的右侧栏项吗?

java - 底部导航栏未在 Activity 中显示

android - 如何防止其他应用程序定义相同的权限名称

java - Android - runOnUIThread 什么时候发生?

React-Native:LayoutAnimation 和 useNativeDriver:对于 Flex 为 true

android - 错误 : jest-haste-map: Haste module naming collision:

css - 带有包装问题的导航栏