public IDisposable Build(UIApplication app, SnackbarConfig config)
        {
            app.SafeInvokeOnMainThread(() =>
            {
                _snackbar?.Dismiss();

                _snackbar               = new TTGSnackbar(config.Message);
                _snackbar.Duration      = config.Duration;
                _snackbar.AnimationType = TTGSnackbarAnimationType.FadeInFadeOut;

                if (config.ActionText != null)
                {
                    _snackbar.ActionText  = config.ActionText;
                    _snackbar.ActionBlock = (_) => config.Action?.Invoke();

                    if (config.ActionTextColor != null)
                    {
                        _snackbar.ActionTextColor = config.ActionTextColor.Value.ToNative();
                    }
                }

                if (config.TextColor != null)
                {
                    _snackbar.MessageTextColor = config.TextColor.Value.ToNative();
                }

                if (config.BackgroundColor != null)
                {
                    _snackbar.BackgroundColor = config.BackgroundColor.Value.ToNative();
                }

                _snackbar.Show();
            });

            return(new DisposableAction(() => app.SafeInvokeOnMainThread(() => _snackbar?.Dismiss())));
        }
        public static void ShowSnackbar(Activity activity, SnackbarConfig config)
        {
            var view = activity.Window.DecorView.RootView.FindViewById(global::Android.Resource.Id.Content);

            if (_snackbar == null)
            {
                _snackbar = Snackbar.Make(view, config.Message, (int)config.Duration.TotalMilliseconds);
            }

            if (_snackbar.IsShownOrQueued)
            {
                _snackbar = Snackbar.Make(view, config.Message, (int)config.Duration.TotalMilliseconds);
            }

            _snackbar.SetDuration((int)config.Duration.TotalMilliseconds);
            _snackbar.SetText(config.Message);

            if (!string.IsNullOrWhiteSpace(config.ActionText))
            {
                _snackbar.SetAction(config.ActionText, (v) =>
                {
                    config.Action?.Invoke();

                    _snackbar.Dismiss();
                });

                if (config.ActionTextColor.HasValue)
                {
                    _snackbar.SetActionTextColor(config.ActionTextColor.Value.ToNativeColor());
                }
            }

            if (config.TextColor.HasValue)
            {
                //TextView textView = _snackbar.View.FindViewById<TextView>(Resource.Id.snackbar_text);
                //textView.SetTextColor(config.TextColor.Value.ToNativeColor());

                // TODO
            }

            if (config.BackgroundColor.HasValue)
            {
                //TextView textView = _snackbar.View.FindViewById<TextView>(Resource.Id.snackbar_text);
                //textView.SetBackgroundColor(config.BackgroundColor.Value.ToNativeColor());

                // TODO
            }

            //if (config.Position != ToastPosition.Default)
            //{
            //    // watch for this to change in future support lib versions
            //    var layoutParams = _snackbar.View.LayoutParameters as FrameLayout.LayoutParams;
            //    if (layoutParams != null)
            //    {
            //        if (config.Position == ToastPosition.Top)
            //        {
            //            layoutParams.Gravity = GravityFlags.Top;
            //            layoutParams.SetMargins(0, 80, 0, 0);
            //        }
            //        else if (config.Position == ToastPosition.Center)
            //        {
            //            layoutParams.Gravity = GravityFlags.Center;
            //        }
            //        else if (config.Position == ToastPosition.Bottom)
            //        {
            //            layoutParams.Gravity = GravityFlags.Bottom;
            //            layoutParams.SetMargins(0, 0, 0, 30);
            //        }

            //        _snackbar.View.LayoutParameters = layoutParams;
            //    }
            //}

            _snackbar.Show();
        }