【问题标题】:Xamarin Integrating Platform Specific Components into Cross Platform CodeXamarin 将平台特定组件集成到跨平台代码中
【发布时间】:2014-07-28 04:28:24
【问题描述】:

我有一个用 VS 用 Xamarin 编写的简单跨平台应用程序。所有 UI 都构建在一个共享(可移植)类中,因此只需编写一次(使用 Xamarin 表单)并涵盖 Android 和 iOS。

我现在只想添加简单的加载 HUD,但我看不到任何好的跨平台 HUD。它们都是为 iOS 或 Android 编写的。我只想知道如何将组件添加到 Android 和 iOS 项目并从共享类中访问它。即在我的共享类中有一个名为 ShowLoading() 的方法,它在 iOS 上加载 iOS 组件,在 Android 上加载 android(有趣的是)。

有什么想法吗?

谢谢

【问题讨论】:

    标签: visual-studio xamarin.ios xamarin xamarin.android loading


    【解决方案1】:

    这是一个用于跨平台进度 hud 的 github 项目(它使用了 ANDHud 和 BTProgressHud)。 https://github.com/aritchie/acr-xamarin-forms

    根据示例,您可以执行以下简单操作:

        private readonly IUserDialogService dialogService;
    
        public ICommand Alert {
            get {
                return new Command(async () => {
                    await dialogService.AlertAsync("Test alert", "Alert Title", "CHANGE ME!");
                    this.Result = "Returned from alert!";
                });
            }
        }
    

    【讨论】:

      【解决方案2】:

      您可以使用Dependancy Service 从您的通用代码中访问特定于平台的代码。

      我还建议您查看 BT Progress HUD 组件(适用于 iOS)和 And HUD 组件(适用于 android)作为加载界面。它们可以通过 XHUD API 以跨平台方式一起使用。

      【讨论】:

      • 嗨,克里斯,这行得通,但我已经完成了一半。我有 Android 项目的 ANDHud 组件。它在 show 方法中需要一个“活动/上下文”。我如何才能将其从共享项目中传递下来?
      • 前几天我也遇到了同样的问题!我最终做的是在 MainActivity.cs [public static AndroidActivity Instance;] 中创建一个公共静态字段。在创建时,我然后设置此活动 [Instance = this;]。然后我在需要时使用此实例/活动。这有点 hacky,还有其他获取上下文的方法,但这可能是最简单和最有用的。这是 xamarin 表单如何处理您的活动以及您的代码与其解耦的结果,但确实设法解决了问题。
      • 没问题!如果您找到更清洁的方法,请告诉我!
      • 嗨,克里斯,虽然我已经告诉你你知道可以在共享项目中使用的任何好的跨平台休息服务类。即像所有平台的 RestSharp 一样?
      • 我不能说我用过,抱歉。不过,最近完成了一个便携式的 restsharp 版本,所以这对你来说可能是一个很好的起点。 nuget.org/packages/FubarCoder.RestSharp.Portable
      猜你喜欢
      • 2020-06-22
      • 1970-01-01
      • 2014-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      • 1970-01-01
      相关资源
      最近更新 更多