2017-03-03 4 views
1

굿모닝, 내 안드로이드에서 내비게이션 막대를 숨기려고합니다. 기기 관리자 권한이 있지만 키오스크 앱을 만들었지 만 탐색 바를 숨길 필요가 있습니다. 이 순간에는 집에 버튼이 없지만 버튼이 다시 나타납니다. 태블릿이 기기 관리자에게 앱을 종료 할 수 없다고 말하면됩니다. 내가 사용하는 줄을 차단하는이탐색 바 숨기기 안드로이드 6.0 xamarin

내가 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; 

하지만이 코드를 시도했다

startlocktask() 

누군가 아래쪽 막대를 위로 드래그하면이 단추는 뒤로 가기 버튼으로 만 나타납니다. 사용자가 탐색 막대를 볼 수 있기를 원하지 않습니다. 누군가 나를 도울 수 있습니까?

감사 관련

답변

0

이이 링크에서 답변입니다 https://stackoverflow.com/a/19201933/4172545

도움이 될 수

좋아, 사람이 관심이 있다면, 내가 해결 한 내 문제 이런 식으로 : 1px 너비와 match_parent 높이로 윈도우 관리자에 투명 뷰를 추가했습니다. 그런 다음이보기에 전역 레이아웃 수신기를 추가했으며 레이아웃이 변경 될 때마다 화면에서이보기의 위치를 ​​확인합니다. Y가 0이면 상태 표시 줄이 보이지 않으므로 전체 화면 앱이 실행 중이어야합니다. 이것은 네이티브 View.OnSystemUiVisibilityChangeListener보다 더 잘 작동합니다. 왜냐하면 어떻게 든 그 메소드를 트리거하지 않는 앱 (새로운 야후 날씨와 같은)이 있기 때문입니다.

그래서 이벤트 화재가 발생할 수 있으며 탐색 표시 줄이 보이면 원래 숨기기 위해 코드를 다시 호출하여 숨 깁니다. 여기

그것을 쓸 수있는 좀 더 간결 방법 :

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

Window.DecorView.SystemUiVisibility = (StatusBarVisibility) 
          (SystemUiFlags.LowProfile 
          | SystemUiFlags.Fullscreen 
          | SystemUiFlags.HideNavigation 
          | SystemUiFlags.Immersive 
          | SystemUiFlags.ImmersiveSticky); 
안녕 Omar.thanks는 대답을, 나는 유의 방법을 만들에 나에게 제안 코드 만 탐색 모음을 삽입하는 시도
+0

여전히 나타납니다. 무엇이 잘못 되었나요? 감사합니다. andrea –

+0

코드 스 니펫에 추가 행을 추가했습니다. 또한 Xamarin은 안드로이드 옵션에서'Use Shared Runtime' 옵션을 사용하면 이상한 버그가 있습니다. 때로는 앱이 최신 코드 변경을 표시하지 않습니다. 나는 항상 그것을 무능하게한다. 앱을 사용 중지 한 후에는 테스트중인 기기에서 앱을 제거하고 다시 배포해야합니다. –

+0

안녕 오마르 내가 내일 이것을 시도 할 것이지만, 나는 이미 그렇게했다고 확신한다. 당신이 oncreate 메소드 (Window.setflag ....) 하에서 나에게 말한 코드를 삽입하는 것만으로 충분합니까? 감사합니다 –