这是一个非常古老的问题,但我最近遇到了同样的问题。在此对话中找到了以下实现:https://www.gamedev.net/forums/topic/674511-auto-hide-nav-bar-on-android-app-ndk/
要隐藏顶部的导航栏,您需要将此行添加到您的AndroidManifest.xml
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
你可以这样添加
<activity android:name="android.app.NativeActivity"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
要隐藏底部的导航栏需要编写如下代码。
void AutoHideNavBar(struct android_app* state)
{
JNIEnv* env;
state->activity->vm->AttachCurrentThread(&env, NULL);
jclass activityClass = env->FindClass("android/app/NativeActivity");
jmethodID getWindow = env->GetMethodID(activityClass, "getWindow", "()Landroid/view/Window;");
jclass windowClass = env->FindClass("android/view/Window");
jmethodID getDecorView = env->GetMethodID(windowClass, "getDecorView", "()Landroid/view/View;");
jclass viewClass = env->FindClass("android/view/View");
jmethodID setSystemUiVisibility = env->GetMethodID(viewClass, "setSystemUiVisibility", "(I)V");
jobject window = env->CallObjectMethod(state->activity->clazz, getWindow);
jobject decorView = env->CallObjectMethod(window, getDecorView);
jfieldID flagFullscreenID = env->GetStaticFieldID(viewClass, "SYSTEM_UI_FLAG_FULLSCREEN", "I");
jfieldID flagHideNavigationID = env->GetStaticFieldID(viewClass, "SYSTEM_UI_FLAG_HIDE_NAVIGATION", "I");
int flagFullscreen = env->GetStaticIntField(viewClass, flagFullscreenID);
int flagHideNavigation = env->GetStaticIntField(viewClass, flagHideNavigationID);
int flag = flagFullscreen | flagHideNavigation;
env->CallVoidMethod(decorView, setSystemUiVisibility, flag);
state->activity->vm->DetachCurrentThread();
}