web-dev-qa-db-ja.com

Android電話でソフトキーバーを非表示にする方法は?

enter image description here

アプリが起動したら、ソフトキーバー(赤い四角形)を非表示にして、画面を大きくします。

  1. どうすれば非表示にできますか?

  2. アプリが終了したときにバーを意図的に表示する必要がありますか?または、アプリの終了後に自動的に復元されますか?

Android 4.1。電話の前面にハードウェアキーはありません。

36
ohho

試す

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

公式から doc

SYSTEM_UI_FLAG_LOW_PROFILEフラグは、STATUS_BAR_HIDDENフラグを置き換えます。このフラグを設定すると、システムバーまたはナビゲーションバーの「ロープロファイル」モードが有効になります。ナビゲーションボタンが暗くなり、システムバーのその他の要素も非表示になります。これを有効にすると、システムナビゲーションボタンの邪魔にならない、より没入型のゲームを作成するのに役立ちます。

SYSTEM_UI_FLAG_VISIBLEフラグはSTATUS_BAR_VISIBLEフラグを置き換えて、システムバーまたはナビゲーションバーの表示を要求します。

SYSTEM_UI_FLAG_HIDE_NAVIGATIONは、ナビゲーションバーを完全に非表示にすることを要求する新しいフラグです。これは一部の携帯電話で使用されるナビゲーションバーに対してのみ機能することに注意してください(タブレットのシステムバーを非表示にしません)。システムがユーザー入力を受け取るとすぐに、ナビゲーションバーが表示に戻ります。そのため、このモードは主にビデオの再生や、画面全体が必要であるがユーザー入力が不要なその他の場合に役立ちます。

ナビゲーションバーの動作はアプリに依存するIIRCなので、ユーザーがアプリを離れると再び表示されます。

26
MarsAtomic

私は遅いことは知っていますが、それは正しい答えです。したがって、あなたがやろうとしているのは、没入型モードと呼ばれるものです。 (API 19)

チェックアウト: https://developer.Android.com/training/system-ui/immersive.html

あなたが求めていたコードは次のとおりです:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        getWindow().getDecorView().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);
    }
}
47
mhdjazmati