【问题标题】:Xaml AbsoluteLayout Proportional flag does not behave as expectedXaml AbsoluteLayout Proportional 标志未按预期运行
【发布时间】:2018-02-22 10:55:14
【问题描述】:

我是 XAML 和 Xamarin 的新手,所以这可能是每个人都习惯的东西,但我希望有人能给我解释一下:

<Label Text="Relax" Font="20" TextColor="White" AbsoluteLayout.LayoutBounds="0.5, 50, 1000,1000"  AbsoluteLayout.LayoutFlags="XProportional"></Label>

所以我将此标签嵌套在 AbsoluteLayout 中,没有自定义属性。标签设置为距屏幕顶部 50 像素,距侧面 50%(或水平位于屏幕中间)。当我运行它时,标签甚至没有出现在屏幕上:

但只要我将HorizontalOptions="Center" 添加到它的属性中,它的行为就完全符合预期:

所以当我复制标签的原始属性时(注意没有水平选项):

<BoxView Color="Black" AbsoluteLayout.LayoutBounds="0.5, 50, 100,100"  AbsoluteLayout.LayoutFlags="XProportional"></BoxView>

它的行为完全符合预期:

正如我之前所说,我有正确定位图像的解决方案,所以我只想解释一下为什么 boxview 可以正确定位自己,而具有完全相同属性的标签需要 HorizontalOptions="Center" 属性

谢谢!

【问题讨论】:

    标签: android visual-studio xaml xamarin


    【解决方案1】:

    来自您的代码:

    <Label Text="Relax" 
           Font="20" 
           TextColor="White" 
           AbsoluteLayout.LayoutBounds="0.5, 50, 1000,1000"   
           AbsoluteLayout.LayoutFlags="XProportional"></Label>
    

    AbsoluteLayout.LayoutBounds 已将标签的宽度和高度设置为 1000,如果您将BackgroundColor="Yellow" 添加到您的Label 中,然后运行您的项目,您将在屏幕上看到标签的区域(黄色区域)。 “放松”文本存在于1000*1000 区域的左上角,但它在您的屏幕之外,因此您看不到它。如果你使用AbsoluteLayout.LayoutBounds="0.5, 50, 100,100",就像你的BoxView,你会看到Label

    关于HorizontalOptions="Center",它将把你的“放松”文本放在1000*1000的中心水平,如果你还添加VerticalOptions="Center",你的“放松”文本将放在1000*1000的中心(水平和垂直的中心),它将在您的屏幕下方(屏幕之外),因此您看不到它。您可以使用100*100500*500 对其进行测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-15
      • 1970-01-01
      • 2020-12-17
      • 2014-11-12
      • 1970-01-01
      • 2020-06-28
      • 2012-02-18
      • 2018-01-18
      相关资源
      最近更新 更多