【发布时间】:2017-03-08 22:13:15
【问题描述】:
我需要通过真实尺寸的图像获得HeightRequest(RelativeLayout) 点。我从服务器获取图像。是尺寸720x250。我需要使用RelativeLayout。
<ListView
x:Name="EventsListView"
GroupDisplayBinding="{Binding EventGroupTitle}"
HasUnevenRows="True"
IsGroupingEnabled="True"
ItemTapped="ListView_OnItemTapped"
ItemsSource="{Binding GroupedItems}"
SeparatorVisibility="None">
<ListView.GroupHeaderTemplate>
</ListView.GroupHeaderTemplate>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell BindingContextChanged="BindableObject_OnBindingContextChanged">
<RelativeLayout x:Name="RelativeLayout" Padding="0">
<!-- Background picture -->
<controls:BExtendedCachedImage
x:Name="Picture"
Aspect="AspectFit"
CacheType="Disk"
DownsampleToViewSize="True"
LoadingPlaceholder="backgroundBlur"
RelativeLayout.HeightConstraint="{ConstraintExpression Type=RelativeToView,
ElementName=RelativeLayout,
Property=Height}"
RelativeLayout.WidthConstraint="{ConstraintExpression Type=RelativeToView,
ElementName=RelativeLayout,
Property=Width}"
Source="{Binding Picture}" />
</RelativeLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Source="{Binding Picture}" - 我的图片来自服务器。在BindableObject_OnBindingContextChanged 的代码隐藏中,我需要更改HeightRequest (RelativeLayout)。但如果我不手动设置高度,单元格将拉伸到全高。
这是我的代码隐藏:
private void BindableObject_OnBindingContextChanged(object sender, EventArgs e)
{
var cell = (ViewCell) sender;
var layout = cell.View.FindByName<RelativeLayout>("RelativeLayout");
var bc = (GroupEventsMapPageModel) BindingContext;
layout.HeightRequest = THIS_MANUAL_VALUE;
}
如何获得 THIS_MANUAL_VALUE?
我尝试通过此代码:
var device = Resolver.Resolve<IDevice>();
var display = device.Display;
return display.Scale;
图片Height (250) \ display.Scale - 不起作用。我创建标签。
xxxhdpi 设备 (640 dpi) - 4 (比例) - layout.HeightRequest = 79;
xxxhdpi 设备 (560 dpi) - 3.5 (比例) - layout.HeightRequest = 93;
xhdpi 设备 (315 dpi) - 2 (比例) - layout.HeightRequest = 110;
hdpi 设备 (240 dpi) - 1.5 (比例) - layout.HeightRequest = 165;
但是,我注意到在更改对角线时。
4.7" xxhdpi 设备 (420 dpi) - 2.625 (比例) - layout.HeightRequest = 87;
5,2" xxhdpi 设备 (420 dpi) - 2.625 (比例) - layout.HeightRequest = 130;
我怎样才能得到公式?
【问题讨论】:
-
这个问题到处都是。您在寻找什么“高度”?
-
@ Joshua Poling,我正在寻找 HeightRequest(Xamarin 点)。例如
标签: xamarin.ios xamarin.android xamarin.forms screen-size hdpi