为什么AbsoluteLayout.LayoutBounds在Xamarin中工作不正确?

时间:2018-09-08 20:25:27

标签: xamarin xamarin.forms xamarin.android

我不明白为什么屏幕末端(照片附上,平台-Android)之前有这么多空间。 看起来AbsoluteLayout并不能填满屏幕的所有空间,但事实并非如此,``白色''按钮之间也有空格(一个按钮应该占据屏幕的20%;首先从屏幕的左边缘开始占4%之后开始,第二-28%:28%-4%-20%= 4%按钮之间的可用空间)?

这是xaml代码:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="PokerCalculator.OutsCalculator"
         BackgroundColor="#131313">
<AbsoluteLayout BackgroundColor="HotPink">
    <Label Text="Number of outs:"
           FontSize="Medium"
           AbsoluteLayout.LayoutBounds="0.04,0,0.3,0.18"
           AbsoluteLayout.LayoutFlags="SizeProportional, PositionProportional"  
           BackgroundColor="Aqua"/>
    <Label x:Name="lblOutNumber"
           Text="15"
           AbsoluteLayout.LayoutBounds="0.35,0,0.18,0.18"
           AbsoluteLayout.LayoutFlags="SizeProportional, PositionProportional"
           BackgroundColor="Azure"/>
    <Button x:Name="btnBack"
            Text="BACK"
            Clicked="btnBack_Clicked"
            AbsoluteLayout.LayoutBounds="0.7,0,0.28,0.18"
            AbsoluteLayout.LayoutFlags="SizeProportional, PositionProportional"
            BackgroundColor="Fuchsia"/>

    <Button BackgroundColor="White" 
                AbsoluteLayout.LayoutBounds="0.04,0.2,0.20,0.28"
                AbsoluteLayout.LayoutFlags="All"/>
    <Button BackgroundColor="White"
                AbsoluteLayout.LayoutBounds="0.28,0.2,0.20,0.28"
                AbsoluteLayout.LayoutFlags="All"/>
    <Button BackgroundColor="White"
                AbsoluteLayout.LayoutBounds="0.52,0.2,0.20,0.28"
                AbsoluteLayout.LayoutFlags="All"/>
    <Button BackgroundColor="White"
                AbsoluteLayout.LayoutBounds="0.76,0.2,0.20,0.28"
                AbsoluteLayout.LayoutFlags="All"/>

</AbsoluteLayout>
</ContentPage>

photo

Photo(mockup)

1 个答案:

答案 0 :(得分:0)

作为一个较晚的答案,我在nuget包中放了一个AbsoluteLayout的分支,但是以一种更可预测的方式工作。

安装nuget软件包SmartMachines.AbsoluteLayout,添加名称空间xmlns:sm="clr-namespace:SmartMachines;assembly=AbsoluteLayout",您将拥有与本地Xamarin完全相同的AbsoluteLayout,但具有预期的比例对齐行为。

希望可以在谷歌搜索和调试上为其他人节省几个小时。