internal void Show(Page sender, SnackBarOptions arguments) { var view = Platform.GetRenderer(sender).View; var snackBar = AndroidSnackBar.Make(view, arguments.MessageOptions.Message, (int)arguments.Duration.TotalMilliseconds); var snackBarView = snackBar.View; snackBarView.SetBackgroundColor(arguments.BackgroundColor.ToAndroid()); var snackTextView = snackBarView.FindViewById <TextView>(Resource.Id.snackbar_text); snackTextView.SetMaxLines(10); snackTextView.SetBackgroundColor(arguments.MessageOptions.Foreground.ToAndroid()); snackTextView.SetTextSize(ComplexUnitType.Pt, (float)arguments.MessageOptions.FontSize); snackTextView.LayoutDirection = arguments.IsRtl ? global::Android.Views.LayoutDirection.Rtl : global::Android.Views.LayoutDirection.Inherit; foreach (var action in arguments.Actions) { snackBar.SetAction(action.Text, async v => await action.Action()); snackBar.SetActionTextColor(action.ForegroundColor.ToAndroid()); } snackBar.AddCallback(new SnackBarCallback(arguments)); snackBar.Show(); }
protected void ShowSnackbar(string message, int duration = ASnackbar.LengthLong) { var view = FindViewById(Android.Resource.Id.Content); if (view == null) { return; } ASnackbar.Make(view, message, duration).Show(); }
public void Show(Page sender, SnackbarArguments arguments) { var view = Platform.GetRenderer(sender).View; var snackbar = AndroidSnackbar.Make(view, arguments.Message, arguments.Duration); var snackbarView = snackbar.View; var snackTextView = snackbarView.FindViewById <TextView>(Resource.Id.snackbar_text); snackTextView.SetMaxLines(10); if (!string.IsNullOrEmpty(arguments.ActionButtonText) && arguments.Action != null) { snackbar.SetAction(arguments.ActionButtonText, async(v) => await arguments.Action()); } snackbar.AddCallback(new SnackbarCallback(arguments)); snackbar.Show(); }
internal async ValueTask Show(VisualElement sender, SnackBarOptions arguments) { var renderer = await GetRendererWithRetries(sender) ?? throw new ArgumentException("Provided VisualElement cannot be parent to SnackBar", nameof(sender)); var snackBar = AndroidSnackBar.Make(renderer.View, arguments.MessageOptions.Message, (int)arguments.Duration.TotalMilliseconds); var snackBarView = snackBar.View; if (sender is not Page) { snackBar.SetAnchorView(renderer.View); } if (arguments.BackgroundColor != Forms.Color.Default) { snackBarView.SetBackgroundColor(arguments.BackgroundColor.ToAndroid()); } var snackTextView = snackBarView.FindViewById <TextView>(Resource.Id.snackbar_text) ?? throw new NullReferenceException(); snackTextView.SetMaxLines(10); if (arguments.MessageOptions.Padding != MessageOptions.DefaultPadding) { snackBarView.SetPadding((int)arguments.MessageOptions.Padding.Left, (int)arguments.MessageOptions.Padding.Top, (int)arguments.MessageOptions.Padding.Right, (int)arguments.MessageOptions.Padding.Bottom); } if (arguments.MessageOptions.Foreground != Forms.Color.Default) { snackTextView.SetTextColor(arguments.MessageOptions.Foreground.ToAndroid()); } if (arguments.MessageOptions.Font != Font.Default) { if (arguments.MessageOptions.Font.FontSize > 0) { snackTextView.SetTextSize(ComplexUnitType.Dip, (float)arguments.MessageOptions.Font.FontSize); } snackTextView.SetTypeface(arguments.MessageOptions.Font.ToTypeface(), TypefaceStyle.Normal); } snackTextView.LayoutDirection = arguments.IsRtl ? global::Android.Views.LayoutDirection.Rtl : global::Android.Views.LayoutDirection.Inherit; foreach (var action in arguments.Actions) { snackBar.SetAction(action.Text, async v => { if (action.Action != null) { await action.Action(); } }); if (action.ForegroundColor != Forms.Color.Default) { snackBar.SetActionTextColor(action.ForegroundColor.ToAndroid()); } var snackActionButtonView = snackBarView.FindViewById <TextView>(Resource.Id.snackbar_action) ?? throw new NullReferenceException(); if (arguments.BackgroundColor != Forms.Color.Default) { snackActionButtonView.SetBackgroundColor(action.BackgroundColor.ToAndroid()); } if (action.Padding != SnackBarActionOptions.DefaultPadding) { snackActionButtonView.SetPadding((int)action.Padding.Left, (int)action.Padding.Top, (int)action.Padding.Right, (int)action.Padding.Bottom); } if (action.Font != Font.Default) { if (action.Font.FontSize > 0) { snackTextView.SetTextSize(ComplexUnitType.Dip, (float)action.Font.FontSize); } snackActionButtonView.SetTypeface(action.Font.ToTypeface(), TypefaceStyle.Normal); } snackActionButtonView.LayoutDirection = arguments.IsRtl ? global::Android.Views.LayoutDirection.Rtl : global::Android.Views.LayoutDirection.Inherit; } snackBar.AddCallback(new SnackBarCallback(arguments)); snackBar.Show(); }
internal partial async ValueTask Show(VisualElement sender, SnackBarOptions arguments) { var renderer = await GetRendererWithRetries(sender) ?? throw new ArgumentException("Provided VisualElement cannot be parent to SnackBar", nameof(sender)); var snackBar = AndroidSnackBar.Make(renderer.View, arguments.MessageOptions.Message, (int)arguments.Duration.TotalMilliseconds); var snackBarView = snackBar.View; if (sender is not Page) { snackBar.SetAnchorView(renderer.View); } if (snackBar.View.Background is GradientDrawable shape) { if (arguments.BackgroundColor != Forms.Color.Default) { shape?.SetColor(arguments.BackgroundColor.ToAndroid().ToArgb()); } var density = renderer.View.Context?.Resources?.DisplayMetrics?.Density ?? 1; var defaultAndroidCornerRadius = 4 * density; arguments.CornerRadius = new Thickness(arguments.CornerRadius.Left * density, arguments.CornerRadius.Top * density, arguments.CornerRadius.Right * density, arguments.CornerRadius.Bottom * density); if (arguments.CornerRadius != new Thickness(defaultAndroidCornerRadius, defaultAndroidCornerRadius, defaultAndroidCornerRadius, defaultAndroidCornerRadius)) { shape?.SetCornerRadii(new[] { (float)arguments.CornerRadius.Left, (float)arguments.CornerRadius.Left, (float)arguments.CornerRadius.Top, (float)arguments.CornerRadius.Top, (float)arguments.CornerRadius.Right, (float)arguments.CornerRadius.Right, (float)arguments.CornerRadius.Bottom, (float)arguments.CornerRadius.Bottom }); } snackBarView.SetBackground(shape); } var snackTextView = snackBarView.FindViewById <TextView>(Resource.Id.snackbar_text) ?? throw new NullReferenceException(); snackTextView.SetMaxLines(10); if (arguments.MessageOptions.Padding != MessageOptions.DefaultPadding) { snackBarView.SetPadding((int)arguments.MessageOptions.Padding.Left, (int)arguments.MessageOptions.Padding.Top, (int)arguments.MessageOptions.Padding.Right, (int)arguments.MessageOptions.Padding.Bottom); } if (arguments.MessageOptions.Foreground != Forms.Color.Default) { snackTextView.SetTextColor(arguments.MessageOptions.Foreground.ToAndroid()); } if (arguments.MessageOptions.Font != Font.Default) { if (arguments.MessageOptions.Font.FontSize > 0) { snackTextView.SetTextSize(ComplexUnitType.Dip, (float)arguments.MessageOptions.Font.FontSize); } snackTextView.SetTypeface(arguments.MessageOptions.Font.ToTypeface(), TypefaceStyle.Normal); } snackTextView.LayoutDirection = arguments.IsRtl ? global::Android.Views.LayoutDirection.Rtl : global::Android.Views.LayoutDirection.Inherit; foreach (var action in arguments.Actions) { snackBar.SetAction(action.Text, async _ => await OnActionClick(action, arguments).ConfigureAwait(false)); if (action.ForegroundColor != Forms.Color.Default) { snackBar.SetActionTextColor(action.ForegroundColor.ToAndroid()); } var snackActionButtonView = snackBarView.FindViewById <TextView>(Resource.Id.snackbar_action) ?? throw new NullReferenceException(); if (action.BackgroundColor != Forms.Color.Default) { snackActionButtonView.SetBackgroundColor(action.BackgroundColor.ToAndroid()); } if (action.Padding != SnackBarActionOptions.DefaultPadding) { snackActionButtonView.SetPadding((int)action.Padding.Left, (int)action.Padding.Top, (int)action.Padding.Right, (int)action.Padding.Bottom); } if (action.Font != Font.Default) { if (action.Font.FontSize > 0) { snackTextView.SetTextSize(ComplexUnitType.Dip, (float)action.Font.FontSize); } snackActionButtonView.SetTypeface(action.Font.ToTypeface(), TypefaceStyle.Normal); } snackActionButtonView.LayoutDirection = arguments.IsRtl ? global::Android.Views.LayoutDirection.Rtl : global::Android.Views.LayoutDirection.Inherit; } snackBar.AddCallback(new SnackBarCallback(arguments)); snackBar.Show(); }