Xamarin.Forms之UserDialogs 重制版本

在 forms 里面,目前使用比较多的弹出组件是 Acr.UserDialogs ,但是这个组件有些小问题,比如 loading .hide 会同时把 toast 给一起关掉,android 下的 toast 希望是 安卓原生的toast 样子,而不是 底部弹出一个横条(其实是 android 的 Snackbar),对于 ios 的toast 也希望类似android 的样子,但是 Acr.UserDialogs 里面 toast 是 snackbar 样式,这并不符合产品需求情况。

GitHub地址: https://github.com/jxnkwlp/UserDialogs2

因此,我重制了一个版本, 包地址:https://www.nuget.org/packages/Passingwind.UserDialogs/

对 toast 和 snackbar 做了区分,同时 loading 的关闭不会影响 toast 。

接口有这些:

目前没有异步接口,因为觉得 Acr.UserDialogs  的 异步接口和同步接口 对比起来不太好理解。

void Toast(string message);

void Toast(ToastConfig config);

IDisposable Snackbar(string message, Action action = null);

IDisposable Snackbar(SnackbarConfig config);

void Alert(string message);

void Alert(AlertConfig config);

IDisposable ActionSheet(ActionSheetConfig config);

IDisposable Loading(LoadingConfig config);

IProgressDialog Progress(ProgressConfig config);

void Prompt(PromptConfig config);

void Form(PromptFormConfig config);

使用方法:

各个接口 Config 都可以先设置默认值,比如 alert 里面 的确定按钮,可以全局设置为 “确定”

AlertConfig.DefaultOkText = "确定"; 

这样设置后,就不用每次使用alert 的时候去设置 确定按钮的文本。

UserDialogs.Instance.Alert(new AlertConfig("您当前无权限操作!").AddOkButton());

相关依赖:

Toast:  在android 上是原生的 toast 组件,在ios 上使用 MBProgressHUD

Snackbar:  在android 上是原生的 snackbar 组件,在ios 上使用 TTGSnackbar

Progress,Loading  在 android 上使用的是 KProgressHUD (https://github.com/jxnkwlp/KProgressHUD.csharp) 这个是代码翻译版本,  在 ios 上是使用 MBProgressHUD

更多说明可以查看 readme 文件 https://github.com/jxnkwlp/UserDialogs2

最后,觉得好给个star 再走呗 ?? ~~~

原文链接:https://blog.wuliping.cn/post/rebuild-userdialogs-for-xamarin

原文地址:https://www.cnblogs.com/passingwind/p/10122705.html

时间: 2024-10-11 19:14:27

Xamarin.Forms之UserDialogs 重制版本的相关文章

Xamarin.Forms之UserDialogs探究

Forms中只提供了ActionSheet和Alert两种Dialog,而且是Page级别的,这两东西基本没有用,必须要使用第三方的库,目前支持最好\功能最强大的就是UserDialogs,没有之一. 但是UserDialogs中会碰到很多问题,下面就记录一下 1.除了标准的Dialog,像Toast Loading等这些都是会冲突的,也就是同一时间只能有一个在界面上 譬如如果前面有一个Loading,后面弹出一个Toast,会直接将Loading替换掉,即使Loading的时间未结束 PS:l

Xamarin.Forms 3.1.0+版本 Android 原生支持底部导航栏啦

Xamarin.Forms 3.1.0+版本 Android 原生支持底部导航栏啦 Xamarin.Forms 3.1.0以上版本终于支持Android底部导航栏啦,可以不用第三方的支持库了. https://developer.xamarin.com/releases/xamarin-forms/xamarin-forms-3.1/3.1.0/ C#代码: On<Android>().SetToolbarPlacement(ToolbarPlacement.Bottom); Xaml代码:

Xamarin.Forms 3.1.0+版本 Android 原生支持底部导航栏

Xamarin.Forms 3.1.0+版本 Android 原生支持底部导航栏 Xamarin.Forms 3.1.0以上版本终于支持Android底部导航栏啦,可以不用第三方的支持库了. https://developer.xamarin.com/releases/xamarin-forms/xamarin-forms-3.1/3.1.0/ C#代码: On<Android>().SetToolbarPlacement(ToolbarPlacement.Bottom); Xaml代码: &

从零开始学Xamarin.Forms(一) 概述

Xamarin 读 "?z?m?rin",是一个基于开源项目mono的能够使用C#开发的收费的跨平台(iOS.Android.Windows Phone.Mac)解决方案. 1.原理 Xamarin.iOS: 也就是之前的 MonoTouch(Mono for iOS),使?静态编译(Ahead-Of-Time)?式将C#代码编译为 ARM?进制代码. Xamarin.Android: 即之前的MonoDroid(Mono for Android) ,是将C# 代码编译成IL封装到Mo

Xamarin.Forms学习之初

微软的Build 2016结束的有段时间了,对于一个简单的小屌丝程序员--我来说,关注最大的无疑是Xamarin的免费(开源什么的让大神们上吧),内心激动啊.大会结束的周末我就迫不及待的安装了,然后...一脸的懵逼,更新vs后什么sdk,jdk都不知道,唯一知道的就是没法运行,后来大神们相继出了一些文章,才开始了解一些大概,有错误的请在下面留言提出,免得我误导了别人. xamarin可以简单分为一下几个: Xamarin.Forms:个人觉得这才是Xamarin真正的优势所在,真正的跨平台,一次

Xamarin.Forms 调用 腾讯地图SDK

Xamarin.Forms研究了好一段时间了,最近一直在学习中,想尝试一下调用其他的SDK,就如腾讯地图SDK(申请容易). 完成此次项目得感谢以下链接: http://www.cnblogs.com/jtang/p/4698496.html 其他文档参考: 腾讯地图SDK(安卓)文档 这里面有详细的使用过程(当然里面的代码是不适用C#的,不过要从这里下载SDK,也有如何申请Key的过程,请参考阅读) Xamarin.Forms自定义每个平台的控件文档 里面有如何根据不同的平台条件下,调用其他页

Xamarin.Forms学习之位图(二)

上篇文章分享了如何加载网络图片和PCL中的图片,所以今天继续分享关于如何加载平台的内嵌图片,在这之前说一下上篇文章开头的一个问题:为什么不能加载UWP项目,这是因为我升级了UWP的SDK,而Xamarin还没有支持到这个版本(我也不想用Xamarin来发UWP项目).还有就是园友问怎么知道哪些是平台特殊的API(Platform-specific API和文件操作),自认为呢,当你调用一个API的时候需要引用Xanmarin.IOS和Mono.Android或者说除了.NET的API都算是Pla

演练:使用Xamarin.Forms开发产品介绍性质的应用(VB版)

概述 Xamarin这个使用mono和.net core的跨平台开发框架这几年在不断发展.被微软收购后的Xamarin为个人开发者提供了免费版的Xamarin for Visual Studio,吸引了更多开发人员的关注. Xamarin.Forms用起来比较方便,因为用这种方式编写一次就能到处运行.但是不知道为什么,Xamarin目前只完整支持C#.他们宣称支持的F#实际上只是比C#多了一些文档和不常用的工具上的支持,缺少Xaml后代码生成器等重要功能支持. 而VB就更受冷落了.用户建议Xam

Xamarin.Forms+Prism(3)—— 简单提示UI的使用

这次给大家介绍两个比较好用的提示插件,如成功.等待.错误提示. 准备: 1.新建一个Prism Xamarin.Forms项目: 2.右击解决方案,添加NuGet包: 1)Acr.UserDialogs(全部安装): 2)AndHUD(安卓项目安装),BTProgressHUD(iOS项目安装): 设计: 1.我们先介绍第一种Acr.UserDialogs,这个提示插件其实是基于AndHUD和BTProgressHUD,就是说Acr.UserDialogs就是通过实现DependencyServ