为了账号安全,请及时绑定邮箱和手机立即绑定

Xamarin Forms Image 控件分配的高度超过请求的高度

Xamarin Forms Image 控件分配的高度超过请求的高度

C#
Cats萌萌 2022-12-04 10:34:31
我正在为我的元素设置一个显式HeightRequest的;但是调试的时候,实际好像跳到了. 这是我的 Xaml:16ImageHeight70<Grid Margin="1" Padding="0" ColumnSpacing="0" RowSpacing="0" HeightRequest="17">    <BoxView CornerRadius="3" Color="LightGray"/>    <BoxView Margin="1" CornerRadius="3" BackgroundColor="White"/>    <StackLayout Margin="2,0,2,0" Orientation="Horizontal" HeightRequest="17" Spacing="0">        <Image Source="hooray_icon"               WidthRequest="16"               HeightRequest="16"               Margin="1,0,1,0"               Aspect="Fill"/>        <Label Text="{Binding HoorayCount}"               Margin="1,0,1,0"               VerticalOptions="Center"               VerticalTextAlignment="Center"               HorizontalOptions="Center"               HorizontalTextAlignment="Center"               HeightRequest="16"/>    </StackLayout></Grid>预期设计:实际设计:hooray_icon是一个 512x512 PNG 图像。Xamarin.Forms 版本:3.6.0.293080PS 我知道这是通过使用和覆盖以及调试和方法Image导致问题的元素。如果我弄错了,请纠正我。class CustomImage : ImageOnMeasureOnSizeAllocated
查看完整描述

1 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

回答

HeightRequest不能保证,这只是一个请求。如果 Xamarin.Forms 能够满足请求,它会执行它,但根据屏幕大小和布局,它可能无法满足请求。

解决方案

设置Grid.ColumnDefinition'sWidthGrid.RowDefinition'sHeight的值。

代码

<Grid Margin="1" Padding="0" ColumnSpacing="0" RowSpacing="0">

  <Grid.RowDefinitions>

    <RowDefinition Height="17" />

  </Grid.RowDefinitions>

  <Grid.ColumnDefinitions>

    <ColumnDefinition Width="17" />

    <ColumnDefinition Width="17" />

    <ColumnDefinition Width="17" />

  </Grid.ColumnDefinitions>

    <BoxView CornerRadius="3" Color="LightGray" Grid.Row="0" Grid.Column="0"/>

    <BoxView Margin="1" CornerRadius="3" BackgroundColor="White" Grid.Row="0" Grid.Column="1"/>

    <StackLayout Margin="2,0,2,0" Orientation="Horizontal" Spacing="0" Grid.Row="0" Grid.Column="2">

        <Image Source="hooray_icon"

               Margin="1,0,1,0"

               Aspect="Fill"

               HeightRequest="16"/>

        <Label Text="{Binding HoorayCount}"

               Margin="1,0,1,0"

               VerticalOptions="Center"

               VerticalTextAlignment="Center"

               HorizontalOptions="Center"

               HorizontalTextAlignment="Center"

               HeightRequest="16"/>

    </StackLayout>

</Grid>


查看完整回答
反对 回复 2022-12-04
  • 1 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信