StackLayout忽略iOS上的EndAndExpand

时间:2018-02-23 03:22:31

标签: xamarin xamarin.forms xamarin.ios

似乎iOS中的Xamarin.Forms中存在已确认的错误,当您有内容/标签时文字太大而需要2行才能在StackLayout中显示(比如说) layoutA),其他兄弟元素和父元素占用layoutA的宽度。

Kent Boogaart filled a Bug使用以下示例重现错误。

<StackLayout Margin="0,20,0,0">
    <!-- works (by virtue of no wrapping) -->
    <StackLayout Orientation="Horizontal">
        <Switch/>
        <Label Text="Some text"/>
        <Button Text="A Button" HorizontalOptions="EndAndExpand"/>
    </StackLayout>

    <!-- works (by virtue of no switch) -->
    <StackLayout Orientation="Horizontal">
        <Label Text="Some longer text that wraps over two lines"/>
        <Button Text="A Button" HorizontalOptions="EndAndExpand"/>
    </StackLayout>

    <!-- does not work -->
    <StackLayout Orientation="Horizontal">
        <Switch/>
        <Label Text="Some longer text that wraps over two lines"/>
        <Button Text="A Button" HorizontalOptions="EndAndExpand"/>
    </StackLayout>
</StackLayout>

此问题是否有解决方案/修复/解决方法?

修改

以下是使用的代码:

<ListView HasUnevenRows="True" SeparatorVisibility="None" HorizontalOptions="StartAndExpand" CachingStrategy="RecycleElement">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <StackLayout Orientation="Horizontal" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" BackgroundColor="#eee" Padding="5" Margin="5" >
                    <ffimageloading:CachedImage HorizontalOptions="Start" VerticalOptions="Start" HeightRequest="75" Source="{Binding ID, StringFormat='https://example/api/{0}'}" CacheDuration="15">
                        <ffimageloading:CachedImage.Transformations>
                            <fftransformations:CircleTransformation/>
                        </ffimageloading:CachedImage.Transformations>
                    </ffimageloading:CachedImage>
                    <StackLayout Orientation="Vertical" HorizontalOptions="FillAndExpand">
                        <Label Text="{Binding Name}" TextColor="#f35e20" HorizontalOptions="FillAndExpand"/>
                        <Label Text="{Binding Description}" HorizontalOptions="FillAndExpand" TextColor="#503026" />
                        <Label Text="{Binding ID}" x:Name="ID" IsVisible="False"></Label>
                        <Button Text="Ver productos" TextColor="#FF5F6D" HorizontalOptions="End" BackgroundColor="Transparent"></Button>
                    </StackLayout>
                </StackLayout>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

这些是iOS中应用的实际屏幕截图,在Android中效果很好。

enter image description here

正如您所看到的,在Image1中,第一张卡片正常,按钮(&#34; Agregar al carrito&#34;或者#34; Ver Productos&#34;)就在最后。

但是在第二张卡片中,由于文字太大,按钮会从卡片中掉出来。

在第二张图片中,中间的文字需要2行,包装内容的StackLayout(2个标签和按钮)与带有大文本的标签一样宽。

我在大文字中画了一个红色正方形,并在红色线条上划线,这样你就可以看到由于那个大文字,StackLayout变窄了。

0 个答案:

没有答案