2012-02-10 34 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屬性完成。

我的問題是,如果你有任何人有一個好的方法來做一個活動上下文的想法。目前我的應用程序設計爲從基本活動類開始,其中包含我希望在整個應用程序中使用的任何功能。然後從該基類派生出具體活動。我希望能夠從該基本Activity設置UI導航標誌,因此我不必在整個源代碼中的多個位置執行此操作......但我的基本Activity不包含任何View對象。

作爲一個次要語句,我真正想要做的是完全刪除NAV按鈕(例如使用SYSTEM_UI_FLAG_HIDE_NAVIGATION)並且不讓它們回到用戶輸入(讓我的應用程序完全控制UI) 。我知道這不是市場上的任何應用程序都能做到的事情......但我沒有開發通過市場提供的產品。我目前的計劃涉及到一個定製的操作系統,可以讓我完成這個任務,但如果在此期間有一些消除這些軟按鈕的方法,那將會很不錯。

謝謝!

回答

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的編譯...

但是,「對於這些設置來說這似乎是一個陌生的地方」+1。應該是您可以在清單中爲整個應用程序定義一次的內容。

+4

View.STATUS_BAR_HIDDEN自API級別11以來已棄用。使用View.SYSTEM_UI_FLAG_LOW_PROFILE。 – radley 2012-06-25 04:56:04

4

您無法完全移除ICS導航按鈕。

您可以完全隱藏起來,但他們會只要你觸摸屏幕再次出現:

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

不幸的是,像三星的TouchWiz一些ICS UI層將無法識別SYSTEM_UI_FLAG_HIDE_NAVIGATION。

或者,您也可以最大限度地減少他們和酒吧時就拍了拍他們只會出現:

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

你可能必須建立自己的ROM,完全消除它們。

相關問題