Тост, эквивалентный для Форм Xamarin

Там какой-либо путь использует Формы Xamarin (не Android или конкретная iOS), чтобы иметь всплывающее окно, как Android делает с Тостом, который не нуждается ни в каком взаимодействии с пользователем и уходит после (короткого) промежутка времени?

От поиска вокруг всего я вижу, предупреждения, которым нужны пользовательские щелчки, чтобы уйти.

60
задан 14 November 2018 в 18:12

7 ответов

Можно использовать DisplayAlert("", "", "", "" );

0
ответ дан 1 November 2019 в 09:40

Проверьте plugin.toast v 2.1.2 доступных для андроида, iOS и UWP

0
ответ дан 1 November 2019 в 09:40

Для UWP

public void ShowMessageFast(string message)
    {
        ToastNotifier ToastNotifier = ToastNotificationManager.CreateToastNotifier();
        Windows.Data.Xml.Dom.XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText02);
        Windows.Data.Xml.Dom.XmlNodeList toastNodeList = toastXml.GetElementsByTagName("text");
        toastNodeList.Item(0).AppendChild(toastXml.CreateTextNode("Test"));
        toastNodeList.Item(1).AppendChild(toastXml.CreateTextNode(message));
        Windows.Data.Xml.Dom.IXmlNode toastNode = toastXml.SelectSingleNode("/toast");
        Windows.Data.Xml.Dom.XmlElement audio = toastXml.CreateElement("audio");
        audio.SetAttribute("src", "ms-winsoundevent:Notification.SMS");

        ToastNotification toast = new ToastNotification(toastXml);
        toast.ExpirationTime = DateTime.Now.AddSeconds(4);
        ToastNotifier.Show(toast);
    }
0
ответ дан 1 November 2019 в 09:40

IOS отвечает выше обработанного за меня, но за одну небольшую проблему - предупреждение: Попытайтесь представить UIAlertController..., представление которого не находится в иерархии окна!

После некоторого поиска, я столкнулся с этим несвязанный ответ , который помог. Плакат прокомментировал, что "Это выглядит глупым, но работает", который является правильным на обоих количествах.

Так, я изменил ShowAlert () функция выше с этими строками, которые, кажется, работают:

    var rootVC = UIApplication.SharedApplication.KeyWindow.RootViewController;
    while ( rootVC.PresentedViewController != null) {
        rootVC = rootVC.PresentedViewController;
    }
    rootVC.PresentViewController( alert, true, null);
0
ответ дан 1 November 2019 в 09:40

Это - мой улучшенный ShowAlert версия версии Ian Warburton, чтобы гарантировать, что тост отображен даже на раскрывающейся странице. Кроме того, тост отклонен если пользовательский щелчок вне тоста. Я использовал UIAlertControllerStyle.ActionSheet, что взгляду нравится тост, но он также работает с UIAlertControllerStyle.Alert

    void ShowAlert(string message, double seconds)
    {
        var alert = UIAlertController.Create(null, message, UIAlertControllerStyle.ActionSheet);

        var alertDelay = NSTimer.CreateScheduledTimer(seconds, obj =>
        {
            DismissMessage(alert, obj);
        });

        var viewController = UIApplication.SharedApplication.KeyWindow.RootViewController;
        while (viewController.PresentedViewController != null)
        {
            viewController = viewController.PresentedViewController;
        }
        viewController.PresentViewController(alert, true, () =>
        {
            UITapGestureRecognizer tapGesture = new UITapGestureRecognizer(_ => DismissMessage(alert, null));
            alert.View.Superview?.Subviews[0].AddGestureRecognizer(tapGesture);
        });
    }

, я надеюсь, что это поможет кому-то!

1
ответ дан 1 November 2019 в 09:40

Можно использовать IUserDialog NuGet и просто использовать, это - toastAlert

var toastConfig = new ToastConfig("Toasting...");
toastConfig.SetDuration(3000);
toastConfig.SetBackgroundColor(System.Drawing.Color.FromArgb(12, 131, 193));

UserDialogs.Instance.Toast(toastConfig);
2
ответ дан 1 November 2019 в 09:40

Можно использовать Acr. Пакет UserDialogs от самородка и кода как ниже,

Acr.UserDialogs.UserDialogs.Instance.Toast(Message, new TimeSpan(3));
2
ответ дан 1 November 2019 в 09:40

Другие вопросы по тегам:

Похожие вопросы: