如何让Android导航栏不自动响应?

时间:2014-03-18 19:14:59

标签: android uinavigationbar

我写过这个应用程序有一个按钮(布局已满,所以我不能简单地移动它),它靠近我的Android平板电脑的背面,主页和两个矩形按钮。这意味着偶尔我不小心按下了主页或后退按钮,我被带离了我的应用程序。这真的很烦人。从我读过的内容来看,无法隐藏o禁用此栏。但是,我有什么方法可以做到这一点所以我必须在它响应之前触摸导航栏两次?就像按钮出现一次和另一次实际发出命令一样?

我有

    onCreate(Bundle savedInstanceState):

此代码:

    View decorView = getWindow().getDecorView();
    int uiOptions = View.SYSTEM_UI_FLAG_LOW_PROFILE
            | View.SYSTEM_UI_FLAG_FULLSCREEN;
    decorView.setSystemUiVisibility(uiOptions);

然而有两个问题:1)如果我触摸按钮,我立即被取出我的应用程序和2)直到我杀了我的应用程序并重新启动它,酒吧不会再次变暗(这可以通过为代码放置来解决在其他地方低调,但我不知道在哪里。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

从Android 4.4(API 19)开始,您实际上可以使用新的“沉浸式模式”隐藏底部导航栏。当用户向内沿顶部垂直滑动时,将再次显示导航和系统栏。有关如何实现此目的,请参阅https://developer.android.com/training/system-ui/immersive.html。请注意,对于任何应用程序,沉浸式模式都不是理想的。游戏和视频应用可能最适合沉浸式模式。至于覆盖导航按钮的行为,如果您的应用程序是家庭应用程序(即启动程序),您可以在一定程度上执行此操作。但是,除非你的应用实际上是一个发射器,否则这肯定是不可接受的。然而,如果这是你想要的方式,你的活动应该有以下意图过滤器:

<intent-filter>
  <action android:name="android.intent.action.MAIN" />
  <category android:name="android.intent.category.HOME" />
  <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

这只是为了让你开始,发射器有很多工作......

答案 1 :(得分:0)

这完全符合我的要求:

@Override
protected void onStart(){
    super.onStart();
    //Making the navigation bar requiere two commands to be used.
    View decorView = getWindow().getDecorView();
    int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
    decorView.setSystemUiVisibility(uiOptions);
}

@Override
protected void onResume(){
    super.onResume();
    //Making the navigation bar requiere two commands to be used.
    View decorView = getWindow().getDecorView();
    int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
    decorView.setSystemUiVisibility(uiOptions);
}

导航按钮仍然可见,但是当您第一次按下时,不会发生任何事情。如果你再次推测它会做到应该做的,但如果你回到这个活动,你将需要再次两次。谢谢你的帮助。