【问题标题】:Get HeightRequest points (RelativeLayout) by real size image via Xamarin.Forms通过 Xamarin.Forms 按实际尺寸图像获取 HeightRequest 点(RelativeLayout)
【发布时间】: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


【解决方案1】:

如果您要设置高度:

StackLayout _mainStack = new StackLayout{ HeightRequest = 40};

如果你想得到高度:

var _stacksHeight = _mainStack.Height;

第一个获取或设置此元素所需的高度覆盖。 第二个是只读属性,用于获取 _mainStack 的渲染高度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-29
    • 2019-04-27
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    相关资源
    最近更新 更多