Xamarin 表单:Android 和 IOS 中的 Toast 通知

Son*_*ali 3 toast xamarin.ios xamarin.android xamarin

您好,我正在使用 PCL 项目以 xamarin 形式创建一个应用程序。我想仅针对 android 和 ios 在两次后按时实现 Toast 通知。对于安卓我尝试过 -

long doublePressInterval_ms = 300;
DateTime lastPressTime = DateTime.MinValue;
DateTime pressTime = DateTime.Now;

        if ((pressTime - lastPressTime).TotalMilliseconds <= doublePressInterval_ms)
        {
            if(Device.OS == TargetPlatform.Android)
            {

                Java.Lang.JavaSystem.Exit(0);
            }
        }
        else
        {

           Android.Widget.Toast.MakeText(this, string_name, ToastLength.Long).Show();
        }
        lastPressTime = pressTime;
        return false;
Run Code Online (Sandbox Code Playgroud)

但它显示错误无法将页面转换为 Android 上下文。如何在我的 pcl 项目中获取 adnroid 上下文?

我尝试了Xamarin 的 Toast 通知插件,但它说 .Net 版本不兼容。

在此输入图像描述

Dur*_*n.H 5

在 Xamarin Android 中,您可以像往常一样显示

Toast.MakeText(this,"toast message", ToastLength.Long).Show();
Run Code Online (Sandbox Code Playgroud)

在 Xamarin iOS 中,您必须使用自定义设计的带有动画的 UIView 才能达到相同的效果

public void ShowToast(String message, UIView view)
{
    UIView residualView = view.ViewWithTag(1989);
    if (residualView != null)
        residualView.RemoveFromSuperview();

    var viewBack = new UIView(new CoreGraphics.CGRect(83, 0, 300, 100));
    viewBack.BackgroundColor = UIColor.Black;
    viewBack.Tag = 1989;
    UILabel lblMsg = new UILabel(new CoreGraphics.CGRect(0, 20, 300, 60));
    lblMsg.Lines = 2;
    lblMsg.Text = message;
    lblMsg.TextColor = UIColor.White;
    lblMsg.TextAlignment = UITextAlignment.Center;
    viewBack.Center = view.Center;
    viewBack.AddSubview(lblMsg);
    view.AddSubview(viewBack);
    roundtheCorner(viewBack);
    UIView.BeginAnimations("Toast");
    UIView.SetAnimationDuration(3.0f);
    viewBack.Alpha = 0.0f;
    UIView.CommitAnimations();
}
Run Code Online (Sandbox Code Playgroud)