[英]How to hide BottomNavigationView when navigation bar appears by swipe from bottom?
[英]How to intercept android bottom navigation bar visibility after swipe up
我的 Xamarin.Android MVMCross 片段實現了 View.IOnSystemUiVisibilityChangeListener
這是片段OnViewCreated
方法
View _decorview = ParentActivity.Window.DecorView;
_decorview.SetOnSystemUiVisibilityChangeListener(this);
var uiOptions =
SystemUiFlags.HideNavigation |
SystemUiFlags.ImmersiveSticky;
_decorview.SystemUiVisibility = (StatusBarVisibility)uiOptions;
這是一個OnSystemUiVisibilityChange
方法:
public void OnSystemUiVisibilityChange([GeneratedEnum] StatusBarVisibility visibility)
{
if (((int)visibility & (int)SystemUiFlags.HideNavigation) == 0)
{
if (ParentActivity.BottomNavigation != null)
ParentActivity.BottomNavigation.Visibility = ViewStates.Gone;
}
else
{
if (ParentActivity.BottomNavigation != null)
ParentActivity.BottomNavigation.Visibility = ViewStates.Visible;
}
}
但是當我向上滑動以顯示導航欄時,此方法不會調用
標記SystemUiFlags.ImmersiveSticky
防止在系統 UI 可見性更改時接收回調
亞歷克斯。
我同意文檔說明 ImmersiveSticky 阻止接收回調。
但是,當我遷移到 Android 10 時,我的所有 StickyImmersive 屏幕都在旋轉時遇到了問題。 會出現虛假的系統欄。 不是每次旋轉,但旋轉足夠多次,它們就會開始出現。 所有這些屏幕在 Android 9 及更低版本上都運行良好,並且仍然沒有回調,但任何 Android 10 設備都需要回調。 無奈之下,我嘗試向片段添加一個 View.IOnSystemUiVisibilityChangeListener 並修復了它。 附加代碼對搭載 Android 9 或更低版本的設備沒有任何不利影響。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.