#c# #android #xamarin.android
#c# #Android #xamarin.android
Вопрос:
Мой Xamarin.Фрагмент Android MvvmCross реализует представление.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 amp; (int)SystemUiFlags.HideNavigation) == 0)
{
if (ParentActivity.BottomNavigation != null)
ParentActivity.BottomNavigation.Visibility = ViewStates.Gone;
}
else
{
if (ParentActivity.BottomNavigation != null)
ParentActivity.BottomNavigation.Visibility = ViewStates.Visible;
}
}
Но этот метод не вызывается, когда я провожу пальцем вверх, чтобы показать панель навигации
Ответ №1:
Флаг SystemUiFlags.ImmersiveSticky
предотвращает получение обратного вызова при изменении видимости системного пользовательского интерфейса
Комментарии:
1. Спасибо за ваш обмен, пожалуйста, примите ваш ответ (нажмите ✔ в верхнем левом углу этого ответа) через два дня, это поможет другим, у кого есть подобная проблема.
Ответ №2:
AlexTsy.
Я согласен с тем, что в документации указано, что ImmersiveSticky предотвращает получение обратного вызова.
Однако, когда я перешел на Android 10, у меня возникли проблемы со всеми моими липкими мерцающими экранами при вращении. Снова появится ложная системная панель. Не при каждом повороте, но вращайте достаточное количество раз, и они начнут появляться. Все эти экраны отлично работали с Android 9 и ниже и по-прежнему обходились без обратного вызова, но любому устройству Android 10 требуется обратный вызов. В отчаянии я попытался добавить представление.IOnSystemUiVisibilityChangeListener к фрагменту, и это исправило его. Дополнительный код не оказал никакого негативного влияния на устройства с Android 9 или менее.
Комментарии:
1. Спасибо за ваш комментарий. Я буду помнить об этом. Я заменил
ImmersiveSticky
наImmersive