2016-07-29 235 views
0

我试图隐藏导航栏,当键盘从活动中的编辑文本启动时。我尝试了很多解决方案,但没有多少运气。隐藏软键盘启动时的导航栏Android

下面的代码我在这里发现在这个论坛,但它并没有消除键盘启动时的导航栏。

private void setupMainWindowDisplayMode() 
{ 
    View decorView = setSystemUiVisilityMode(); 
    decorView.setOnSystemUiVisibilityChangeListener(
      new View.OnSystemUiVisibilityChangeListener() 
      { 
       @Override 
       public void onSystemUiVisibilityChange(int visibility) 
       { 
        setSystemUiVisilityMode(); // Needed to avoid exiting immersive_sticky when keyboard is displayed 
       } 
      }); 
} 

private View setSystemUiVisilityMode() 
{ 
    View decorView = getWindow().getDecorView(); 
    int options; 
    options = 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 
      // hide nav bar 
      | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar 
      | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_IMMERSIVE | 
      View.SYSTEM_UI_LAYOUT_FLAGS; 

    decorView.setSystemUiVisibility(options); 
    return decorView; 
} 

任何建议,将衷心感谢

回答

0

那么你可能已经知道,但是这只是为了确保。

您可以检查如果键盘是可见或不与下面的代码:

InputMethodManager imm = (InputMethodManager) getActivity() 
     .getSystemService(Context.INPUT_METHOD_SERVICE); 

if (imm.isAcceptingText()) { 
    // keyboard is shown 
} else { 
    // keyboard is not shown 
} 

然后你就可以隐藏或显示导航栏。

https://developer.android.com/training/system-ui/navigation.html#40

在上述API,它说

With this approach, touching anywhere on the screen causes the navigation 
bar (and status bar) to reappear and remain visible. The user 
interaction causes the flags to be be cleared. 

看起来像这可能是一个问题。我想检查这是否有效,但我可以用软键获得设备。希望这可以帮助。