void AddStatusBarUnderlay()
        {
            _statusBarUnderlay = new global::Android.Views.View(this);

            var layoutParameters = new ARelativeLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, GetStatusBarHeight())
            {
                AlignWithParent = true
            };

            layoutParameters.AddRule(LayoutRules.AlignTop);
            _statusBarUnderlay.LayoutParameters = layoutParameters;
            _layout.AddView(_statusBarUnderlay);

            if (Forms.IsLollipopOrNewer)
            {
                Window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds);
                Window.SetStatusBarColor(AColor.Transparent);

                int primaryColorDark = GetColorPrimaryDark();

                if (primaryColorDark != 0)
                {
                    int r = AColor.GetRedComponent(primaryColorDark);
                    int g = AColor.GetGreenComponent(primaryColorDark);
                    int b = AColor.GetBlueComponent(primaryColorDark);
                    int a = AColor.GetAlphaComponent(primaryColorDark);
                    SetStatusBarColor(AColor.Argb(a, r, g, b));
                }
            }
        }
Ejemplo n.º 2
0
        internal static int GetThemeAttrColor(this Context context, int attr, float alpha)
        {
            int color         = GetThemeAttrColor(context, attr);
            int originalAlpha = AColor.GetAlphaComponent(color);

            // Return the color, multiplying the original alpha by the disabled value
            return((color & 0x00ffffff) | ((int)Math.Round(originalAlpha * alpha) << 24));
        }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            AToolbar bar;

            if (ToolbarResource != 0)
            {
                bar = LayoutInflater.Inflate(ToolbarResource, null).JavaCast <AToolbar>();
                if (bar == null)
                {
                    throw new InvalidOperationException("ToolbarResource must be set to a Android.Support.V7.Widget.Toolbar");
                }
            }
            else
            {
                bar = new AToolbar(this);
            }

            SetSupportActionBar(bar);

            Window.SetSoftInputMode(SoftInput.AdjustPan);

            _layout = new ARelativeLayout(BaseContext);
            SetContentView(_layout);

            Xamarin.Forms.Application.ClearCurrent();

            _previousState = _currentState;
            _currentState  = AndroidApplicationLifecycleState.OnCreate;

            OnStateChanged();

            _statusBarUnderlay = new global::Android.Views.View(this);
            var layoutParameters = new ARelativeLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, GetStatusBarHeight())
            {
                AlignWithParent = true
            };

            layoutParameters.AddRule(LayoutRules.AlignTop);
            _statusBarUnderlay.LayoutParameters = layoutParameters;
            _layout.AddView(_statusBarUnderlay);

            if (Forms.IsLollipopOrNewer)
            {
                Window.DecorView.SystemUiVisibility = (StatusBarVisibility)(SystemUiFlags.LayoutFullscreen | SystemUiFlags.LayoutStable);
                Window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds);
                Window.SetStatusBarColor(AColor.Transparent);

                int primaryColorDark = GetColorPrimaryDark();

                if (primaryColorDark != 0)
                {
                    int r = AColor.GetRedComponent(primaryColorDark);
                    int g = AColor.GetGreenComponent(primaryColorDark);
                    int b = AColor.GetBlueComponent(primaryColorDark);
                    int a = AColor.GetAlphaComponent(primaryColorDark);
                    SetStatusBarColor(AColor.Argb(a, r, g, b));
                }
            }
        }