Xamarin.Forms 如何实现Toast

Toast提示框对于日常的开发非常有用,主要用于不需要用户确认的提示信息显示。

Xamarin.Forms自带的提示框需要用户点击确定,Android很好用Toast其实也可以实现滴。

首先,我们要创建一个接口类

using System;

using System.Threading.Tasks;

namespace MyTest

{

    public interface IAppHandler

    { 

        void ShowToastMessage(string strMessage, bool bLong = false);

    }

}

然后在Android下面一个DependencyService继承类,暂时命名为AppHandlerImplementation.cs

using System;

using System.Threading.Tasks;

using Android.Content;

using MyTest.Droid.DependencyService;

[assembly: Xamarin.Forms.Dependency(typeof(AppHandlerImplementation))]

namespace MyTest.Droid.DependencyService

{

    public class AppHandlerImplementation : IAppHandler

    {

        public AppHandlerImplementation()

        {

        }

        public void ShowToastMessage(string strMessage, bool bLong = false)

        {

            Android.Widget.Toast.MakeText(Xamarin.Forms.Forms.Context, strMessage, bLong ? Android.Widget.ToastLength.Long : Android.Widget.ToastLength.Short).Show();

        }

    }

}

对于iOS,由于苹果的设计规范,是不推荐使用Toast这种提示框,原因是会造成用户困扰,但是也不影响过审,具体可以在iOS项目下添加Nugut组件Toast.iOS,项目地址是

https://github.com/andrius-k/Toast

同理也添加AppHandlerImplementation.cs,代码如下

using System;

using System.Threading.Tasks;

using GlobalToast;

using MyTest.iOS.DependencyService;

[assembly: Xamarin.Forms.Dependency(typeof(AppHandlerImplementation))]

namespace MyTest.iOS.DependencyService

{

    public class AppHandlerImplementation : IAppHandler

    {

        public AppHandlerImplementation()

        {

        }

        public void ShowToastMessage(string strMessage, bool bLong = false)

        {

            Toast.MakeToast(strMessage).SetPosition(ToastPosition.Center).SetDuration(bLong ? ToastDuration.Long : ToastDuration.Regular).Show();

        }

    }

}

为了方便调用,可以加两个静态扩展

public static void ShowToastMessage(this Xamarin.Forms.View view, string strMessage, bool bLong = false)

        {

            Xamarin.Forms.DependencyService.Get<IAppHandler>().ShowToastMessage(strMessage, bLong);

        }


public static void ShowToastMessage(this Xamarin.Forms.ContentPage page, string strMessage, bool bLong = false)

        {

            Xamarin.Forms.DependencyService.Get<IAppHandler>().ShowToastMessage(strMessage, bLong);

        }

这样子在ContentPage和ContentView里面执行this.ShowToastMessage("提示框内容");即可

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,581评论 2 45
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    wgl0419阅读 6,360评论 1 9
  • 论学习的重要性,你想要专业,想要学精,想要更通透,就需要不断的学习,学习啥都一样,需要时间学习,这种学习需要一万个...
    丝雨妈妈阅读 429评论 0 2
  • 恰似春临而无花,星夜无月卷沉沙。 云边寻得一线牵,是谓沧桑两处发。 年轮似辙不回还,谁摆锦旗待余南? 路影霓裳空觉...
    黍安阅读 138评论 2 2
  • 一捧鲜花不仅能愉悦心情 更是漫长而平淡生活的一束光 它不止存在于节日里 更是日常生活仪式感的体现 愿生活日日有鲜花...
    一米空白阅读 5,182评论 0 2