2016-07-29 17 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 
} 

その後、あなたはナビゲーションバーを非表示にしたり表示したりできます。上記のAPIで

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

、これは問題になる可能性がありますように

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. 

に見えると言います。私はこれが機能するかどうか確認したいと思っていましたが、私はソフトキーのあるデバイスを手に入れることができました。お役に立てれば。

関連する問題