代码之家  ›  专栏  ›  技术社区  ›  CMPalmer

如何使用Xamarin Forms正确旋转标签?

  •  0
  • CMPalmer  · 技术社区  · 3 年前

    我有一个区域,我们的网页,我想尽量减少到一边。当它最小化时,我希望区域的“标题”显示为旋转90度,但当我这样做时,它会被剪裁到标签的未旋转高度,所以它看起来是这样的(旋转后的文本应该是“打开任务摘要”):

    enter image description here

    显然,这就是正在发生的事情:

    enter image description here

    XAML中定义标签的部分如下。我已经尝试了Fill、FillAndExpand、StartAndExpand等的几种变体,以及设置HeightRequest和WidthRequest属性。我也在没有StackLayout的情况下完成了这项工作,并将“旋转”应用于标签,而不是Stack Layout,并且它总是显示相同。

    <StackLayout 
         HorizontalOptions="Fill"
         VerticalOptions="Fill"
         Rotation="90"
         IsVisible="{Binding DetailMinimized}" >
         <Label                                      
                HorizontalOptions="FillAndExpand"
                VerticalOptions="FillAndExpand"
                LineBreakMode="NoWrap"
                HorizontalTextAlignment="Center"
                VerticalTextAlignment="Center"
                Text="{Binding DetailTitle}"
                IsVisible="{Binding DetailMinimized}" />
    </StackLayout>
    

    那么,构造XAML以使全文在旋转后可见的正确方法是什么呢?

    0 回复  |  直到 3 年前
        1
  •  2
  •   Michal DiviÅ¡    3 年前

    我已经设法做到了这一点,一个小的负利润黑客。

    app screenshot

    这是代码:

    <?xml version="1.0" encoding="utf-8" ?>
    <ContentPage
        x:Class="XfLabelRotationApp.MainPage"
        xmlns="http://xamarin.com/schemas/2014/forms"
        xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
    
        <Grid ColumnDefinitions="auto, *" ColumnSpacing="0">
            <Grid
                Grid.Column="0"
                ColumnDefinitions="*,auto"
                ColumnSpacing="0">
    
                <StackLayout
                    Grid.Column="0"
                    Padding="10"
                    Spacing="10">
                    <BoxView
                        BackgroundColor="DarkBlue"
                        HeightRequest="30"
                        WidthRequest="30" />
                    <BoxView
                        BackgroundColor="DarkBlue"
                        HeightRequest="30"
                        WidthRequest="30" />
                    <BoxView
                        BackgroundColor="DarkBlue"
                        HeightRequest="30"
                        WidthRequest="30" />
                    <BoxView
                        BackgroundColor="DarkBlue"
                        HeightRequest="30"
                        WidthRequest="30" />
                </StackLayout>
    
                <Grid
                    Grid.Column="1"
                    BackgroundColor="#ddd"
                    WidthRequest="30">
                    <Label
                        Margin="-100,0"
                        Rotation="90"
                        Text="Open Detail By Dragging This"
                        VerticalTextAlignment="Center" />
                </Grid>
    
            </Grid>
    
            <StackLayout
                Grid.Column="1"
                Padding="10"
                BackgroundColor="#eee">
                <Label Text="Main App Content" />
            </StackLayout>
        </Grid>
    
    </ContentPage>
    

    请注意 Margin="-100,0" Label 。如果没有,标签只会假设 Height Width Rotation 财产似乎在Xamarin.Forms工作。

    希望这能有所帮助。

    推荐文章