コード例 #1
0
        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();
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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();
        }
コード例 #4
0
        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();
        }
コード例 #5
0
        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();
        }