diff options
Diffstat (limited to 'Xamarin.Forms.Platform.Android/AppCompat/FormsAppCompatActivity.cs')
-rw-r--r-- | Xamarin.Forms.Platform.Android/AppCompat/FormsAppCompatActivity.cs | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/Xamarin.Forms.Platform.Android/AppCompat/FormsAppCompatActivity.cs b/Xamarin.Forms.Platform.Android/AppCompat/FormsAppCompatActivity.cs index ab2fb61a..83a2950c 100644 --- a/Xamarin.Forms.Platform.Android/AppCompat/FormsAppCompatActivity.cs +++ b/Xamarin.Forms.Platform.Android/AppCompat/FormsAppCompatActivity.cs @@ -41,7 +41,7 @@ namespace Xamarin.Forms.Platform.Android AndroidApplicationLifecycleState _previousState; - bool _renderersAdded; + bool _renderersAdded, _isFullScreen; int _statusBarHeight = -1; global::Android.Views.View _statusBarUnderlay; @@ -468,6 +468,38 @@ namespace Xamarin.Forms.Platform.Android SetStatusBarVisibility(adjust); } + public override void OnWindowAttributesChanged(WindowManagerLayoutParams @params) + { + base.OnWindowAttributesChanged(@params); + + if (Xamarin.Forms.Application.Current == null || Xamarin.Forms.Application.Current.MainPage == null) + return; + + if (@params.Flags.HasFlag(WindowManagerFlags.Fullscreen)) + { + if (Forms.TitleBarVisibility != AndroidTitleBarVisibility.Never) + Forms.TitleBarVisibility = AndroidTitleBarVisibility.Never; + + if (_isFullScreen) + return; + } + else + { + if (Forms.TitleBarVisibility != AndroidTitleBarVisibility.Default) + Forms.TitleBarVisibility = AndroidTitleBarVisibility.Default; + + if (!_isFullScreen) + return; + } + + _isFullScreen = !_isFullScreen; + + var displayMetrics = Resources.DisplayMetrics; + var width = displayMetrics.WidthPixels; + var height = displayMetrics.HeightPixels; + AppCompat.Platform.LayoutRootPage(this, Xamarin.Forms.Application.Current.MainPage, width, height); + } + void SetStatusBarVisibility(SoftInput mode) { if (!Forms.IsLollipopOrNewer) |