2017-03-03 92 views
1

Goodmorning, 我想隱藏我的應用程序android上的導航欄。我有設備管理員權限,我已經創建了我的自助服務終端應用,但我需要隱藏導航欄。在這一刻,我沒有主頁按鈕,但我有後退按鈕。如果我按它的平板電腦說你不能退出設備管理員的應用程序。阻止我用了吧這個隱藏導航欄安卓6.0 xamarin

startlocktask() 

我都試過devicePolicyManager.SetStatusBarDisabled() 但這隱藏狀態不在家

我有一個隱藏的導航欄

View decorView = Window.DecorView; 
      var uiOptions = (int)decorView.SystemUiVisibility; 
      var newUiOptions = (int)uiOptions; 
      newUiOptions |= (int)SystemUiFlags.LowProfile; 
      newUiOptions |= (int)SystemUiFlags.Fullscreen; 
      newUiOptions |= (int)SystemUiFlags.HideNavigation; 
      newUiOptions |= (int)SystemUiFlags.Immersive; 
      newUiOptions |= (int)SystemUiFlags.ImmersiveSticky; 
      decorView.SystemUiVisibility = (StatusBarVisibility)newUiOptions; 

但是當這種代碼有人拖動底部欄,只顯示後退按鈕,我不希望用戶可以看到導航欄。有人能幫我嗎?

感謝 問候

回答

0

這可能有助於 https://stackoverflow.com/a/19201933/4172545

這是從鏈接答案:

好吧,如果有人有興趣,我已經解決了我的問題是這樣的:爲窗口管理器添加了一個透明視圖,寬度爲1px,高度爲match_parent。然後在這個視圖中添加一個全局佈局監聽器,每當佈局發生變化時,我都會在屏幕上檢查這個視圖的位置。如果Y爲0,則狀態欄不可見,所以全屏應用程序必須正在運行。這比原生View.OnSystemUiVisibilityChangeListener更有效,因爲它似乎有一些應用程序不會觸發該方法(如新的yahoo天氣)。

因此,你可以有一個事件觸發,當導航欄是可見的隱藏它,再次調用你的代碼,你最初用來隱藏它。

這裏是寫了一點更簡潔的方式:

Window.SetFlags(WindowManagerFlags.Fullscreen, WindowManagerFlags.Fullscreen); 

Window.DecorView.SystemUiVisibility = (StatusBarVisibility) 
          (SystemUiFlags.LowProfile 
          | SystemUiFlags.Fullscreen 
          | SystemUiFlags.HideNavigation 
          | SystemUiFlags.Immersive 
          | SystemUiFlags.ImmersiveSticky); 
+0

喜Omar.thanks的答案,我試圖插入ü建議我在上創建方法的代碼,但導航欄仍然出現。有什麼不對?謝謝 andrea –

+0

我在代碼片段中增加了一行。如果您在Android選項中啓用「使用共享運行時」選項,Xamarin也會有一個奇怪的錯誤,有時候該應用程序不會顯示您最新的代碼更改。我總是禁用它。只要確保禁用它後,即可從正在測試的設備上卸載應用程序並重新部署該應用程序。 –

+0

HI奧馬爾我會明天嘗試這個,但我很確定我已經做到了。我插入你在oncreate方法(Window.setflag ....)下對我說的代碼就夠了嗎?謝謝 –