我想隐藏Android应用程序中的导航栏。我写了以下课程:
import android.view.View;
public class NavigationUtils {
private NavigationUtils() {
}
public static void hideNavigation(View decorView) {
decorView.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_STICKY);
}
}
当我在onResume()
方法中调用此方法时,导航栏将被隐藏。另外,在主要活动的onCreate()
方法中,我使用以下代码:
View decorView = getWindow().getDecorView();
decorView.setOnSystemUiVisibilityChangeListener
(new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
NavigationUtils.hideNavigation(getWindow().getDecorView());
}
}
}
);
当我点击EditText时,软键盘和导航栏都会打开。使用上面的代码,当软键盘关闭时,导航栏再次被隐藏。这在主要活动中很有效。
现在我已经从主要活动开始了另一项活动,我在上面的onCreate()
方法中添加了相同的代码。
但是现在当我在新活动中退出软键盘(编辑EditText之后)后,导航栏不再隐藏。
我该怎么办?
编辑:两个活动的清单中的条目如下:
<activity
android:name=".MainActivity"
android:configChanges="orientation"
android:screenOrientation="landscape">
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".SensorReadingsActivity"
android:screenOrientation="landscape" />