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(); }