AbsoluteLayout с пропорциональной высотой и с минимальной и максимальной высотой - PullRequest
0 голосов
/ 14 марта 2019

Нам нужен баннер, называемый bannerView в приведенном ниже коде, для уменьшения или расширения в зависимости от высоты устройства.

Однако высота этого баннера:

  • не может быть меньше 60 единиц
  • не может быть больше 146 единиц

код:

<AbsoluteLayout>
    <StackLayout
        Padding="0"
        AbsoluteLayout.LayoutBounds="0,0,1,1"
        AbsoluteLayout.LayoutFlags="SizeProportional"
        HorizontalOptions="FillAndExpand">
        <AbsoluteLayout
            x:Name="bannerView">
            <Image
                AbsoluteLayout.LayoutBounds="0,0,1.05,1"
                AbsoluteLayout.LayoutFlags="SizeProportional"
                Aspect="AspectFill"
                Source="banner.jpg">
            </Image>
            <Label
                Margin="16,18,16,36"
                AbsoluteLayout.LayoutBounds="0,1,-1,-1"
                AbsoluteLayout.LayoutFlags="PositionProportional"
                Text="{Binding Name}">
            </Label>
            <Label
                Margin="16,18,16,18"
                AbsoluteLayout.LayoutBounds="0,1,-1,-1"
                AbsoluteLayout.LayoutFlags="PositionProportional"
                Text="{Binding EmployeeId}">
            </Label>
        </AbsoluteLayout>
        <StackLayout>
            <!-- Dynamic content -->
        </StackLayout>
    </StackLayout>
</AbsoluteLayout>

Примечание: нам нужен внешний AbsoluteLayout, чтобы добавить эффект градиента на экран

1 Ответ

0 голосов
/ 15 марта 2019

Рассматривали ли вы возможность использования FlexLayout, содержащего элемент представления баннера, и этот, имеющий атрибут HeightRequest, связанный для просмотра модели?

Я использовал нечто подобное ControlTemplate для получения заголовка пользовательской страницы в зависимости отВысота панели навигации устройства:

<FlexLayout Direction="Column" JustifyContent="Center">
    <!--HEADER-->
    <Grid IsVisible="{TemplateBinding BindingContext.ToolbarVisibled}" HeightRequest="{TemplateBinding BindingContext.ToolbarHeight}">
        <Grid.ColumnDefinitions>
        <ColumnDefinition Width=".8*"/>
        <ColumnDefinition Width=".2*"/>
        </Grid.ColumnDefinitions>
        <!--...-->
    </Grid>
    <!--CONTENT HERE-->
    <FlexLayout Direction="Column" JustifyContent="Center">
        <ContentPresenter FlexLayout.Grow="1"/>
    </FlexLayout>
</FlexLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...