Мне нужно получить 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 т/д) - 1,5 (Масштаб) - layout.HeightRequest = 165;
Однако заметил, что при смене диагонали.
Устройство 4,7" xxhdpi (420 т/д) - 2,625 (Масштаб) - layout.HeightRequest = 87;
Устройство 5,2" xxhdpi (420 т/д) - 2,625 (Масштаб) - layout.HeightRequest = 130;
Как я могу получить формулу?