web-dev-qa-db-ja.com

Android ICSでシステム/ナビゲーションバーを非表示にする方法はありますか

Androidアイスクリームサンドイッチ(4.0以上)タブレットデバイスでの画面下部のシステム/ナビゲーションバーの非表示に関する議論を拡張したいと思います。

すでにスレッドがあります( Android 3.0でシステムバーを非表示にする方法はありますか?それは内部デバイスであり、ナビゲーションを管理しています )バーを非表示にすることについてハニカムデバイスただし、私のクライアントは最新のアイスクリームサンドイッチデバイスを使用し、画面下部のバーを非表示にすることに非常に熱心です。それらのアプリケーションは、一般消費者向けではなく、全体を引き継ぐことが非常に重要です。デバイスをルート化したり、ファームウェアを書き換えたりせずに、このバーを非表示にできますか、少なくともすべてのボタンの動作をオーバーライドできますか?

20

SYSTEM_UI_FLAG_HIDE_NAVIGATION を確認してください。このフラグは、ユーザーがデバイスを操作するまでナビゲーションバーを非表示にします。 Android 4.0で導入されました。このフラグを有効にするには、次のようにします。

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

ナビゲーションが自動的に再び表示されることはありません。ユーザーがデバイスを操作するたびにナビゲーションを設定する必要があります。

または、 SYSTEM_UI_FLAG_LOW_PROFILE を使用してナビゲーションを目立たなくすることもできます。これにより、ボタンが小さなドットに変更されます(たとえば、カメラアプリのように)

24
user658042

ルート化されたデバイスでは、次のadbコマンドを使用します

adb Shell pm disable com.Android.systemui

ナビゲーションバーを永続的に非表示にします。再度表示するには、実行します

adb Shell pm enable com.Android.systemui

これまでのところ、それは私のためにうまく機能しています

12
Nartus Team

以下のコードを使用することは、ナビゲーションを非表示にするための1つの方法です

_getWindow().getDecorView()
           .setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
_

ただし、上記の問題は、ユーザーが画面に触れるとすぐに表示されることです。

Android KitKatでは、通知バーとナビゲーションを非表示にするIMMERSIVEと呼ばれる機能があります。ユーザーが画面を操作しても表示されません。ただし、ユーザーは画面の上から下にスワイプして表示できるようにします。それを実現するコードを以下に示します

_//Initializew this in onCreate()
View mDecorView = getWindow().getDecorView();

//Then call this function
private void hideSystemUI() {
     mDecorView.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_LOW_PROFILE
            | View.SYSTEM_UI_FLAG_IMMERSIVE);
}
_

しかし、私の場合、ユーザーが画面の上から下にスワイプしたとしても、ナビゲーションと通知バーを表示したくありませんでした。私はそれを試してみましたが、部分的に達成することができました。私がしたことは、hideSystemUI()を1秒ごとに呼び出すCountDownTimerを実装したことです。私はそれが最善の方法ではないことを知っています。しかし、私はそれを行うための他の解決策を得ることができませんでした。

誰かが何かを取得したら、ナビゲーションと通知バーを永久に非表示にする方法を教えてください:)この答えが将来誰かに役立つことを願っています:)

this のビデオを見て、この機能についてよく理解してください。

4
ik024

更新-このような場合に使用できる回避策があります(クライアント用にアプリを手動で設定する)。実際、特定のフレームワーク内でナビゲーションバーを削除することはできません。

ただし、デバイスのルート化がオプションの場合、ナビゲーションバーを非表示にするソリューションがあります。方法は次のとおりです。

ルートデバイス

Busyboxのインストールと実行

HideBarのインストール

HideBarには、「キオスク」モードで実行するオプションがあり、ナビゲーションバーを再表示する方法はありません。言うまでもなく、あなたは本当にこれに注意する必要があります。

関与するリスク:

  • デバイスのブリック

  • busyBoxのインストールを間違えると、情報が失われる可能性はほとんどありませんが、少し注意が必要になります。

  • アプリを終了できない膠着状態に陥る。たとえば、GUIで閉じるオプションが提供されない場合、2起動時にアプリが自動的に起動する場合、3 HideBarではナビゲーションバーを再表示する方法は許可されず、4 HideBarでは起動時にナビゲーションバーが非表示になります。これは、adbからアプリを停止/アンインストールするだけで克服できます。

他の同一の質問は次のとおりです。

3
ılǝ

それはハックなソリューションですが、デバイスをルート化する必要がないため、注目に値すると思います:getWindow().getDecorView().setSystemUiVisibility(8);

2
Bianca D.

Android icsでステータスバーとナビゲーションバーを非表示にするには

LinearLayout layout = (LinearLayout)findViewById(R.id.layout);
layout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
1
sukumar

編集:4.4(19)の時点で、次を使用して「IMMERSIVE MODE」と呼ばれるものを有効にすることができます。 GoogleのCardboard vrtoolkitで導入されましたが、一般的に使用できます。

setSystemUiVisibility(View.SYSTEM_UI_FLAG_IMMERSIVE)

https://developer.Android.com/training/system-ui/immersive.html

私の努力から、setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION)はタブレットでは機能しないようです。

スマートフォン(Nexus 4 Makoでテスト済み)で動作しますが、タッチ/クリックイベントで再表示されます。また、これはバーに焦点を合わせているようで、ビューに焦点を戻すために2回クリックする必要があります。

私は実際にバーを再表示するイベントをトラップする方法を見つけようとしています。運がありません。

頑固なので、Android osコードをダウンロードし、Eclipseデバッガーを起動してa-huntinを実行します。これはバグではありません。ナビゲーションバーはアプリのライフサイクルにとって重要です。

私はアプリがそれを行うのを見てきました(ゲームなど)ので、応援しない方法があります。

1

デバイスをルート化していない限り、非表示にすることはできません。しかし、もちろん、あなたの要件に合わないかもしれない回避策がありますが、現時点ではこの戦略を使用してアプリのこの無効化メニューバー機能を実現するいくつかの有名なアプリがあります。

  • 管理者権限を付与します。
  • デバイス管理プロファイルAPIを使用してパスワードを設定し、デバイスをロックします
  • 次に、ネイティブロック画面の上にUIをロードします。 (もちろん、アクティビティ間で遷移が発生するたびにバックグラウンドロック画面が表示されます。ただし、ロジックがうまく編成されていれば、スムーズでユーザーに気づかれにくくなります)
  • バックを有効にする必要がある場合は、デバイスポリシーマネージャーオブジェクトのresetPassword( ""、0)を使用してパスワードを ""にリセットします。
0
M P Mathugama

SYSTEM_UI_FLAG_HIDE_NAVIGATIONフラグを使用して、Android 4.0以降でナビゲーションバーを非表示にできます。このスニペットは、ナビゲーションバーとステータスバーの両方を非表示にします。

View decorView = getWindow().getDecorView();
// Hide both the navigation bar and the status bar.
// SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
// a general rule, you should design your app to hide the status bar whenever you
// hide the navigation bar.
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
              | View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions

以下を参照してください。 ナビゲーションバーの非表示

0
dayanruben

マニフェストファイルのアプリケーションタグにこのコードを配置して、デフォルトのタブバーを非表示にします

<Application
Android:theme="@Android:style/Theme.Black.NoTitleBar.Fullscreen" <!--
other parameters of application tag-->
>

次に、線形または相対レイアウトを作成し、アクティビティレイアウトに配置します。

0
Adeel

ボタンの動作で十分かもしれませんが、私の答えを見ることができます here

あなたはまだバーを持っていますが、タブレットを再起動せずにアプリを終了することはできません

0
Philippe T.