Android 隐藏导航栏

Android 隐藏导航栏,android,android-layout,Android,Android Layout,我想在我的应用程序中隐藏导航栏(所有屏幕)。下面的代码隐藏导航栏。但如果我再次单击编辑文本,导航栏将出现。如何隐藏 @Override protected void onCreate(Bundle savedInstanceState) { View decorView = getWindow().getDecorView(); decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityCh

我想在我的应用程序中隐藏导航栏(所有屏幕)。下面的代码隐藏导航栏。但如果我再次单击编辑文本,导航栏将出现。如何隐藏

@Override
protected void onCreate(Bundle savedInstanceState) {
 View decorView = getWindow().getDecorView();
    decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
        @Override
        public void onSystemUiVisibilityChange(int visibility) {
            if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
                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);
            }
        }
    });
}

您可以通过在应用程序标记的清单中使用下面的代码行来完成

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

您尝试的是沉浸式屏幕模式。显示用户交互导航栏的位置。

根据我从您的问题中了解到的情况,您希望您的应用程序删除“ActionBar”并完全全屏显示。如果是这种情况,根据应用程序的目标版本,您需要做两件特定的事情:

如果>4.1:

View decorView = getWindow().getDecorView();
// Hide the status bar
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
// Remember that you should never show the action bar if the
// status bar is hidden, so hide that too if necessary.
ActionBar actionBar = getActionBar();
actionBar.hide();
否则,如果<4.1:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // If the Android version is lower than Jellybean, use this call to hide
        // the status bar
        if (Build.VERSION.SDK_INT < 16) {
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        }
        setContentView(R.layout.activity_main);
    }
}
公共类MainActivity扩展活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//如果Android版本低于Jellybean,请使用此调用隐藏
//状态栏
如果(Build.VERSION.SDK_INT<16){
getWindow().setFlags(WindowManager.LayoutParams.FLAG_全屏,
WindowManager.LayoutParams.FLAG(全屏);
}
setContentView(R.layout.activity_main);
}
}

请让我知道这是否解决了您的问题。如果没有,我们可以确定到底出了什么问题,并从中吸取教训。我希望这有帮助。

只需在
AndroidManifest.xml中使用即可

 <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main"
        android:theme="@style/AppTheme.NoActionBar" />
 <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

将这些东西添加到您的项目中

class MainActivity:Activity(){
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
//移除导航栏。
window.decorView.systemui可见性=View.SYSTEM\u UI\u标志\u隐藏\u导航
setContentView(R.layout.activity_main)
}
覆盖窗口焦点更改(hasFocus:Boolean){
super.onWindowFocusChanged(hasFocus)
如果(hasFocus){
window.decorView.systemui可见性=(View.SYSTEM\u UI\u标志\u布局\u稳定
或View.SYSTEM\u UI\u FLAG\u LAYOUT\u HIDE\u导航
或View.SYSTEM\u UI\u FLAG\u LAYOUT\u全屏显示
或View.SYSTEM\u UI\u FLAG\u HIDE\u导航
或View.SYSTEM\u UI\u FLAG\u全屏显示
或视图。系统\u UI\u标志\u沉浸式\u粘性)
}
}
}

FYI这是文档中的代码:@Rob如果能为您复制的代码添加一些注释,那就太好了。我发现这个标志视图。导航栏是透明的,但我不知道如何使用它。
    View decorView = getWindow().getDecorView();
    int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_FULLSCREEN;
    decorView.setSystemUiVisibility(uiOptions);