菜鸟的Xamarin.Forms前行之路——原生Toast的简单实现方法
Posted 半路独行
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了菜鸟的Xamarin.Forms前行之路——原生Toast的简单实现方法相关的知识,希望对你有一定的参考价值。
项目中信息提示框,貌似只有个DisplayAlert,信息提示太过于单一,且在有些场合Toast更加实用,以下是一个简单的原生Toast的实现方法
项目地址:https://github.com/weiweu/TestProject/tree/dev/Toast
共享项目
定义一个接口IToast,包括Short和Long两个方法:
public interface IToast { void LongAlert(string message); void ShortAlert(string message); }
安卓
在安卓平台实现接口的方法并注入,添加一个Toast_android.cs文件:
[assembly: Dependency(typeof(Toast_Android))] namespace Sample.Droid { public class Toast_Android : IToast { public void LongAlert(string message) { Toast.MakeText(Android.App.Application.Context, message, ToastLength.Long).Show(); } public void ShortAlert(string message) { Toast.MakeText(Android.App.Application.Context, message, ToastLength.Short).Show(); } } }
Ios
在ios平台实现接口的方法并注入,添加一个MessageIOSRenderer.cs文件:
[assembly: Xamarin.Forms.Dependency(typeof(Toast_Ios))] namespace Sample.iOS { public class Toast_Ios : IToast { const double LONG_DELAY = 3.5; const double SHORT_DELAY = 2.0; NSTimer alertDelay; UIAlertController alert; public void LongAlert(string message) { ShowAlert(message, LONG_DELAY); } public void ShortAlert(string message) { ShowAlert(message, SHORT_DELAY); } void ShowAlert(string message, double seconds) { alertDelay = NSTimer.CreateScheduledTimer(seconds, (obj) => { dismissMessage(); }); alert = UIAlertController.Create(null, message, UIAlertControllerStyle.Alert); UIApplication.SharedApplication.KeyWindow.RootViewController.PresentViewController(alert, true, null); } void dismissMessage() { if (alert != null) { alert.DismissViewController(true, null); } if (alertDelay != null) { alertDelay.Dispose(); } } } }
使用方法
例如在2个按钮的点击事件中实现Toast
xaml:
<Button Text="Short Toast" Clicked="Short_Clicked"/> <Button Text="Long Toast" Clicked="Long_Clicked"/>
cs:
void Short_Clicked(object sender, EventArgs e)
{
DependencyService.Get<IToast>().ShortAlert("Short Toast");
}
void Long_Clicked(object sender, EventArgs e)
{
DependencyService.Get<IToast>().LongAlert("Long Toast");
}
以上是关于菜鸟的Xamarin.Forms前行之路——原生Toast的简单实现方法的主要内容,如果未能解决你的问题,请参考以下文章
菜鸟的Xamarin.Forms前行之路——实现按钮的字体图标(可扩展)
菜鸟的Xamarin.Forms前行之路——各种报错问题解决方法合集(不定时更新)
菜鸟的Xamarin.Forms前行之路——按钮的按下抬起事件的监控(可扩展至其他事件)