簡體   English   中英

向上滑動后如何攔截android底部導航欄的可見性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM