2017-07-20 10 views
1

非表示にするには:どのように私はこれを使用してソフトキーバーを非表示に私のAndroidアプリでアンドロイドのソフトキー

View decorView = getWindow().getDecorView(); 

int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
        | View.SYSTEM_UI_FLAG_FULLSCREEN 
        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; 

decorView.setSystemUiVisibility(uiOptions); 

をしかし、いくつかのメッセージボックスやトースト表示が再度表示をソフトキー、時に問題があります。 メッセージボックスやトーストが表示されているときにソフトキーを非表示にしたい。

どうすればいいですか?

+0

どのライフサイクル方法でこれを実装していますか? onCreate()私は –

+0

と仮定します。 onCreate() – Trilok

+0

これをメソッドで囲み、ソフトキーを非表示にするたびにメソッドを呼び出すことができます。 –

答えて

1

ダイアログ、インテントチューザ、ソフトキーボード、トーストのようなメッセージは、メインアプリケーションウィンドウとは異なるウィンドウを使用します。
これらの余分なWindowsは、SystemUiVisibilityとWindowフラグを表示して消えると変更することができます。ウィンドウのフォーカスにも活動の作成時に得られるようあなたはもはや、のonCreateでこのコードが必要

public void onWindowFocusChanged(boolean hasFocus) { 
    if(hasFocus) { 
     View decorView = getWindow().getDecorView(); 

     int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
       | View.SYSTEM_UI_FLAG_FULLSCREEN 
       | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
       | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; 

     decorView.setSystemUiVisibility(uiOptions); 
    } 
} 

:私はほとんどのケースで動作するように見つけたもの

onWindowFocusChangedであなたの旗Activityクラスでのセットアップにはありません。

+0

あなたのソリューションは完璧です。問題はビデオ録画でこれを使って、録画したビデオにソフトキーの効果を表示して隠すことです。 – Trilok

+0

これらのフラグを使って作業するのは、ちょっと難しいことです。期待通りに動作しない場合、通常はウィンドウの変更が原因です(ビデオビューのMediaControllerも別のウィンドウにあります)。あなたの現在のトラブルについては分かりませんが、正しいフラグをセットする 'setFullscreen(boolean)'メソッドを作成し、それをすべての考えやすい、正しいかもしれない場所で呼び出そうとします。 – RobCo

関連する問題