private int _pickerWidth;
public int PickerWidth
{
get => _pickerWidth;
set => SetProperty(ref _pickerWidth, value);
}
public void Init()
{
PickerWidth = Convert.ToInt32(Math.Round(DeviceDisplay.MainDisplayInfo.Width / DeviceDisplay.MainDisplayInfo.Density * 0.9))
}
3条答案
按热度按时间yzuktlbb1#
网格列定义和行定义允许使用比例单位(除了固定像素和自动之外)。
以下是两个示例:
第一列将根据需要设置为适合列中所有内容的大小。下一列的宽度为20个与设备无关的像素。网格的剩余宽度将在其余各列中平均分配。(每列100% / 4 = 25%)
此程式码会将4个栏分成总“格点长度”的10%、40%、40%和10%。
brtdzjyr2#
如果你没有使用网格,那么你可以使用Xamarin.Essentials来得到以像素为单位的真实的宽度/高度,然后除以密度,再乘以你想要的尺寸
也就是说
真实的屏幕宽度(像素/密度)* 所需百分比
我的示例是屏幕宽度的90%,您可以从Xaml绑定到VM中的此计算
克马尔
虚拟机
我刚刚开始使用XF 4.8在iOS和Android上运行的应用程序,它可以正确地将弹出页面大小调整为可用屏幕宽度的90
在平板电脑和手机上测试
6jjcrrmo3#
最好采用程序化的方式来解决问题。
将半屏幕大小指定给元素的示例:
其限制是不能通过直接绑定到XAML进行应用,但可以轻松解决相关问题,并可分配给任何视图维度(当然)。要始终明白,事物的复杂应用都是建立在像这样简单的计算基础上的,因此可以很容易地应用。您可以随意地将它应用于一个继承类,该继承类根据任何百分比计算重载高度或宽度。