我需要通过实际尺寸图像获得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_MANUALL_VALUE;
}
请帮忙,我怎样才能获得THIS_MANUALL_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&#34; xxhdpi设备(420 dpi) - 2.625(比例) - layout.HeightRequest = 87;
5,2&#34; xxhdpi设备(420 dpi) - 2.625(比例) - layout.HeightRequest = 130;
帮我搞定公式。
答案 0 :(得分:0)
如果你想设置身高:
StackLayout _mainStack = new StackLayout{ HeightRequest = 40};
如果您正在寻找高度:
var _stacksHeight = _mainStack.Height;
第一个获取或设置此元素的所需高度覆盖。 第二个是只读属性,用于获取_mainStack的渲染高度。