【问题标题】:Define height in Point for iOS and DPI for Android units定义 iOS 单位的 Point 高度和 Android 单位的 DPI
【发布时间】:2015-08-11 10:55:34
【问题描述】:

我正在 Xamarin 中创建自定义控件,其中包含一个矩形。 我在我的 pcl 中为矩形高度提供了一个可绑定属性。

当我在 Android 和 iOS 中通过此高度时,Android 设备(运行 KitKat 的 Nexus 5)和 iOS(运行 iOS8.4 的 iPhone 5)的高度不同。

我知道有密度和屏幕分辨率、DPI 和 PT 等概念,但我不知道当我在 iOS 和 Android 中将 100 作为矩形的高度传递时会发生什么。

它是否将其视为 DPI/PT?如果没有,我该如何实现?

编辑:

它是 Xamarin Forms 代码。

便携式项目具有自定义控件和其中的 BindableProperty,其数据类型为 int,命名为 RectHeight

然后在适用于 Android 和 iOS 的 customrenderer 中,在 OnElementChangedProperty 方法中,我编写代码为 Android 中的 Rect 和 iOS 中的 CGRect 分配高度。

编辑:

我想在自定义控件中以 int 形式提供尺寸,然后将值放入 Android 和 iOS 中,这样无论屏幕分辨率或密度如何,两个操作系统中的高度看起来都相同。这就是为什么提到 DPI 和 PT

【问题讨论】:

  • 您是如何发现差异的?由于显示分辨率不同,矩形可能看起来不同。
  • 我所说的不同的屏幕分辨率可能是原因,如果是这种情况,我需要一个通用的方法。
  • 这是经典的 Xamarin 还是 Xamarin Forms?我假设形式。另外,当您说高度不同时,是相对于屏幕高度显示的高度还是用尺子测量的实际高度?无论哪种方式,您都在寻找一些特定于平台的渲染器来实现这一点。您是否有代码可以显示您目前拥有的内容?

标签: android ios xamarin xamarin.ios xamarin.android


【解决方案1】:

查看 XLabs 上的 IDisplay 实现。您可以从 IDevice 实现中获取实例。这将为您提供运行时显示属性并提供扩展方法,例如从英寸获取表单高度/宽度请求值。我写它们就是为了这个目的,以确保我在需要时得到准确的尺寸。

有关示例,请参阅Xamarin Forum thread

您可以使用源代码或从 NuGet 安装 XLabs.Forms 包。出于您的目的,您很可能会使用 XDpi 和 YDpi 属性来计算本机值。如果您不需要任何其他 XLabs 的东西,那么我建议您将一些例程(尤其是 iOS 的东西,因为 Android 和 WP 在运行时更容易确定)作为扩展程序复制到您的代码中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    • 2014-07-04
    • 2011-07-12
    • 1970-01-01
    • 2018-10-24
    • 2013-09-13
    • 1970-01-01
    相关资源
    最近更新 更多