C# - 上にスワイプした後にAndroidの下部ナビゲーションバーの表示をインターセプトする方法

okwaves2024-01-25  191

私の Xamarin.Android MVVMCros フラグメントは 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;
            }
        }

しかし、上にスワイプしてナビゲーション バーを表示すると、このメソッドは呼び出されません。



------------------------

システム UI の可視性が変更されたときにコールバックを受信しないように SystemUiFlags.ImmersiveSticky にフラグを設定します

1

共有していただきありがとうございます。2 日後に回答を受け入れてください (この回答の左上隅にある ✔ をクリックしてください)。これは同様の問題を抱えている他の人の助けになります。

– レオン

2020 年 9 月 3 日 14:17



------------------------

アレックスツィー。

ドキュメントに ImmersiveSticky がコールバックの受信を妨げると記載されていることに同意します。

しかし、Android 10 に移行すると、すべての StickyImmersive 画面の回転に問題が発生しました。偽のシステム バーが再出現する可能性があります。毎回転ではありませんが、十分な回数回転すると表示され始めます。これらすべてのガレ場ns は Android 9 以前では正常に動作し、コールバックなしでも動作しますが、Android 10 デバイスではコールバックが必要です。必死になって、View.IOnSystemUiVisibilityChangeListener をフラグメントに追加しようとしましたが、それは修正されました。追加のコードは、Android 9 以前を搭載したデバイスに悪影響を及ぼしませんでした。

1

コメントありがとうございます。心に留めておきます。 ImmersiveSticky を Immersive に置き換えました

– AlexTsy

9 月 10 日2020 年 9 時 56 分

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。