2012-02-10 9 views
2

ICSのUIナビゲーションボタンを制御しながら遊んでいます。Android 4.0:表示の代わりにアクティビティからSYSTEM_UI_FLAG_LOW_PROFILEとSYSTEM_UI_FLAG_HIDE_NAVIGATIONを設定する

ナビゲーションボタンを抑制する現在のメカニズムは、SYSTEM_UI_FLAG_HIDE_NAVIGATIONまたはSYSTEM_UI_FLAG_LOW_PROFILEフラグを使用して、ビューからsetSystemUiVisibilityを呼び出すことです。他のほとんどの関連設定(ステータスバーの非表示など)は、LayoutParamsウィンドウのプロパティを使って行っています。

私の質問は、あなたがアクティビティコンテキストからそれを行う良い方法のアイディアを持っているかどうかです。現在のところ、私のアプリケーションは、アプリケーション全体を通して必要な機能を含むベースアクティビティクラスから始めるように設計されています。特定のアクティビティは、その基本クラスから導出されます。そのベースアクティビティからUIナビゲーションフラグを設定できるようにしたいので、ソースコード全体で複数の場所で行う必要はありませんが、ベースアクティビティにはViewオブジェクトが含まれていません。

2番目の声明として、私が本当にやりたいことは、NAVボタン(SYSTEM_UI_FLAG_HIDE_NAVIGATIONの使用など)を完全に削除して、ユーザー入力で戻ってこないようにすることです(私のアプリはUIを完全に制御します) 。私はこれが市場からのアプリケーションができるはずのものではないことを知っています...しかし、私は市場から入手可能なものを開発していません。私の現在の計画には、これを達成するためのOSのカスタムビルドが含まれていますが、その間にこれらのソフトボタンを削除する方法があればうれしいでしょう。

ありがとうございます!

答えて

5

これは私が私の活動ののonCreateに置くものです:

View main_layout = dialog.findViewById(android.R.id.content).getRootView(); 
main_layout.setSystemUiVisibility(View.STATUS_BAR_HIDDEN); 

それはほとんど活動コンテキストからそれを呼び出すようなものです。少なくとも、コンパイル時にビューを定義することには依存していません。 STATUS_BAR_HIDDENは推奨されていませんが、現時点ではコンパイルするにはSYSTEM_UI_FLAG_LOW_PROFILEを取得できません。

しかし、 "これはこれらの設定の不思議な場所のようです"アプリ全体に対してマニフェストで一度定義できるものでなければなりません。

+4

View.STATUS_BAR_HIDDENは、APIレベル11以降で廃止されました。View.SYSTEM_UI_FLAG_LOW_PROFILEを使用してください。 – radley

4

ICSナビゲーションボタンを完全に取り外すことはできません。

あなたはそれらを完全に隠すことができますが、彼らはできるだけ早くあなたが画面に触れると再表示されます:

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

残念ながら、サムスンのTouchWizがのようないくつかのICSのUI層はSYSTEM_UI_FLAG_HIDE_NAVIGATIONを認識しません。

また、あなたはそれらを最小限に抑えることができ、バーは、それがタップすると、彼らにのみ表示されます:あなたはおそらくそれらを完全に排除するために、独自のROMを構築する必要があります

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