Android-滚动后完全隐藏(软)状态和导航栏

问题描述 投票:2回答:1

如何动态隐藏状态和导航栏完全

我的应用通常会显示状态和导航栏。向下滚动时,两个条都应消失。

滚动后,我看到两个条都被清空。例如,“ ||| O

滚动前:

enter image description here

滚动后:

enter image description here

我希望导航栏完全隐藏,因此我的应用程序的浅棕色部分显示为全屏。我有Android v10。

这是我的代码:

View decorView = MainActivity.mainActivity.getWindow().getDecorView();
decorView.setSystemUiVisibility(
        View.SYSTEM_UI_FLAG_IMMERSIVE
                | 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);

状态栏也是如此。信息消失,但空白栏本身保留在屏幕上。我可以通过更改colorPrimaryDark样式属性来更改颜色。

<style name="Base.Theme.Deholtmans" parent="Theme.AppCompat.Light.NoActionBar">
  ...
  <item name="colorPrimaryDark">@color/my_primary_dark</item>

或者,我使用IMMERSE_STICKY,但这与行为无关紧要。

[之前,我还尝试了这些样式项的组合:没有任何变化。

<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowTranslucentNavigation">true</item>

我读了this famous post on full screen,但没有帮助。

另一个技巧无济于事:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        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_STICKY);
    }
}
android android-layout android-navigation-bar
1个回答
0
投票

输入值>样式

现在在应用程序中使用主题

使导航栏翻译

<item name="android:windowTranslucentNavigation">true</item>

要删除它,使其颜色与您的布局匹配

<item name="android:navigationBarColor">@color/white</item>

或尝试一下

public void FullScreencall() {
    if(Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api
        View v = this.getWindow().getDecorView();
        v.setSystemUiVisibility(View.GONE);
    } else if(Build.VERSION.SDK_INT >= 19) {
        //for new api versions.
        View decorView = getWindow().getDecorView();
        int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
        decorView.setSystemUiVisibility(uiOptions);
    }
}

0
投票

最好的前进方式是获得良好的开端。

通过this post,我在几秒钟内创建了一个新的演示应用程序,该应用程序动态支持全屏。现在,我可以设置其他步骤来弥合我的应用程序(仍然不是真正的全屏)和全屏演示应用程序之间的差距。我会及时通知您;-)

这种方法是一种不错的方法,因为到目前为止所有其他帖子/想法/建议都没有奏效。

© www.soinside.com 2019 - 2024. All rights reserved.