Android OnSystemUiVisibilityChangeListener 仅在纵向模式下触发

标签 android navigationbar

我试图在我的全屏 Android 应用程序中隐藏导航栏作为 this document描述。这有效,但仅适用于纵向(*)。如果应用旋转到横向,OnSystemUiVisibilityChangeListener 将停止触发。如果应用随后旋转回纵向,OnSystemUiVisibilityChangeListener 将再次开始触发。我尝试从 onCreate()onResume() 调用这段代码,效果是一样的。

final View decor=getWindow().getDecorView();
decor.setOnSystemUiVisibilityChangeListener (new View.OnSystemUiVisibilityChangeListener() {
    public void onSystemUiVisibilityChange(int visibility) {
        android.util.Log.d("d", "onSystemUiVisibilityChange");
        new Handler().postDelayed(new Runnable() {
            public void run(){
                decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
            }
        }, 1500);
    }
});
decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

(*) 无论应用以何种方向启动,它都能正常工作——如果应用以横向启动,则监听器仅在横向启动,如果应用以纵向启动,则监听器仅在横向启动。

最佳答案

方向改变后尝试重新设置。 在 Activity 下的 list 文件中使用 android:configChanges="orientation"。

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    setContentView(R.layout.my_layout);
    final View decor=getWindow().getDecorView();
    decor.setOnSystemUiVisibilityChangeListener (new View.OnSystemUiVisibilityChangeListener() {
        public void onSystemUiVisibilityChange(int visibility) {
            android.util.Log.d("d", "onSystemUiVisibilityChange");
            new Handler().postDelayed(new Runnable() {
                public void run(){
                    decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
                }
            }, 1500);
        }
    });
    decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

    // and here comes the other initializations you have done in the onCreate method.
}

关于Android OnSystemUiVisibilityChangeListener 仅在纵向模式下触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26150072/

相关文章:

java - 如何检查 body 是否几乎停止在 libgdx + box2d 中移动

android - Android Studio 上用于 NDK 的新实验性 Gradle 中的 preBuild 依赖项

iphone - 我怎样才能使导航栏的颜色成为我想要的任何颜色?

android - 轻型导航栏

html - 当高度 = 100% 时,div 的 CSS/HTML 背景颜色未到达页面底部?

android - 如何检测下拉菜单是否显示在android中微调器的上方或下方?

android - 如何使用联系人 ID 删除特定联系人?

java - 使用 Android 应用程序将视频上​​传到 YouTube 时的身份验证问题

swift - 隐藏导航栏后面的tableHeaderView

html - 我如何在我的导航栏中更改它以及如何更改代码以使其适合任何屏幕?