UserDialogs MVVMCross中的自定义UI

本文关键字:自定义 UI MVVMCross UserDialogs | 更新日期: 2023-09-27 17:53:27

我在MVVMCross项目中使用UserDialogs库。下面的代码已经过测试,运行得非常好,我可以看到Loading Dialog。我的问题是,我如何才能改变循环加载进度的颜色,以与我的主题相匹配?

private async Testing ()
{
   using (Mvx.Resolve<IUserDialogs>().Loading("Loading..."))
   {
     await PutTaskDelay();
   }
}
async Task PutTaskDelay()
{
     await Task.Delay(2000);
}

UserDialogs MVVMCross中的自定义UI

在您的本地代码(iOS/Android(中,您必须使用

  • ProgressDialog继承MyProgressDialog(请参阅https://github.com/aritchie/userdialogs/blob/master/src/Acr.UserDialogs/Platforms/ios/ProgressDialog.cs)
  • 重写Refresh方法,并根据需要自定义创建的对话框
  • UserDialogsImpl继承MyUserDialogs
  • 重写CreateDialogInstance并使其返回new MyProgressDialog()而不是new ProgressDialog()
  • 寄存器MyUserDialogs用于IUserDialogs(Mvx.Register...(

您可以使用styles.xml:提供AppCompat对话框主题

<style name="Base.Theme.App" parent="Theme.AppCompat.DayNight.NoActionBar">
    ...
    <item name="dialogTheme">@style/Base.Theme.Dialog.App</item>
    <item name="alertDialogTheme">@style/Base.Theme.AlertDialog.App</item>
</style>
<style name="Base.Theme.Dialog.App" parent="Theme.AppCompat.DayNight.Dialog">
  <item name="colorAccent">@color/accent</item>
</style>
<style name="Base.Theme.AlertDialog.App" parent="Theme.AppCompat.DayNight.Dialog.Alert">
  <item name="colorAccent">@color/accent</item>
</style>

这将更改ACR.UserDialogs库中进度小部件的颜色,以及负/正/中性操作按钮。请参阅此处的更多信息:如何使用和样式来自appCompat 22.1及以上的新AlertDialog