在Point for iOS和DPI for Android unit中定义高度

时间:2015-08-11 10:55:35

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

我在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

1 个答案:

答案 0 :(得分:1)

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

有关示例,请参阅Xamarin Forum thread

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