私の 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 分