如何在 Xamarin 表单中将边距、填充、宽度和高度值转换为像素(px)?
Posted
技术标签:
【中文标题】如何在 Xamarin 表单中将边距、填充、宽度和高度值转换为像素(px)?【英文标题】:How to convert the margin, padding, width and height values to pixel(px) in Xamarin forms? 【发布时间】:2020-12-23 21:55:42 【问题描述】:Xamarin 表单 控件具有 margin、padding、width 和 height 属性,如何将此属性值转换为像素。
已经获得了一些将 db 转换为 px 的参考链接,但默认的 xamarin 格式是 px 还是 db 是个疑问?
public float convertDpToPx(Context context, float dp)
return dp * context.getResources().getDisplayMetrics().density;
Converting pixels to dp
在 xamarin(uwp、android 和 ios) 中是否可以将宽度和高度值转换为像素?
提前致谢。
【问题讨论】:
查看docs.microsoft.com/en-us/xamarin/xamarin-forms/… 您的问题似乎与此相同:***.com/questions/63612367/… @deirahi,谢谢,我浏览了那个链接,需要一些澄清,我是 android 的初学者,请解释一下为什么我们需要将 db 转换为 px? 我也没有那么多经验。所以,我不知道为什么,但我猜一些 API 和库需要像素。 【参考方案1】:dp是Density-Independent-Pixels,dp在Android开发中常用来适配手机。谷歌规定,当 1 英寸屏幕上有 160 像素(px)时,则 1dp=1px=1dpi。
android dp的目的是自适应手机不同尺寸和分辨率,一个dp值可以让Android系统自动选择匹配的资源。也就是说dp值可以根据设备需求,通过一定的方式获取相应的图片资源或大小。
xamarin 提供了Xamarin.Essentials
用于获取当前显示器的密度。并且你可以使用dp和px的关系从px获取dp。(xamrin宽高的默认单位是px)
public static int px2dip(DisplayInfo mainDisplayInfo, float pxValue)
float scale = (float)mainDisplayInfo.Density;
return (int)(pxValue / scale + 0.5f);
var dp = px2dip(DeviceDisplay.MainDisplayInfo, pxvalue);
【讨论】:
以上是关于如何在 Xamarin 表单中将边距、填充、宽度和高度值转换为像素(px)?的主要内容,如果未能解决你的问题,请参考以下文章
如何根据自己的宽度而不是父 div 将 CSS 边距/填充设置为子 div?
如何在 Xamarin 表单中将数组绑定到 ListView