Xamarin.forms 位置相同时,AbsoluteLayout未按预期对齐控件

Xamarin.forms 位置相同时,AbsoluteLayout未按预期对齐控件,xamarin.forms,Xamarin.forms,我正在尝试在Androd上获得如下类似的弹出窗口,看到X close按钮很好地位于框架顶部。我从测试中复制了代码,但实际代码也不起作用。按钮的一半总是在框架后面。我认为第一个添加的控件位于下方,第二个控件位于上方,如果它们的位置相互重叠。这里有例外吗?无论我怎么试,我都无法将按钮设置到框架上。有人能解释一下absolutelayout的用法吗 <ScrollView HorizontalOptions="Center" VerticalOptions="Center"&g

我正在尝试在Androd上获得如下类似的弹出窗口,看到X close按钮很好地位于框架顶部。我从测试中复制了代码,但实际代码也不起作用。按钮的一半总是在框架后面。我认为第一个添加的控件位于下方,第二个控件位于上方,如果它们的位置相互重叠。这里有例外吗?无论我怎么试,我都无法将按钮设置到框架上。有人能解释一下absolutelayout的用法吗

 <ScrollView
    HorizontalOptions="Center"
    VerticalOptions="Center">
    <AbsoluteLayout>
      <Frame
        x:Name="FrameContainer"
        Margin="15"
        HorizontalOptions="Center"
        BackgroundColor="White">
        <StackLayout
            IsClippedToBounds="True"
            Padding="10, 5"
            Spacing="3">
            <Image
              HorizontalOptions="Center"
              x:Name="OctocatImage"
              Margin="10"
              HeightRequest="150"
              WidthRequest="150">
              <Image.Source>
                <OnPlatform
                  x:TypeArguments="ImageSource"
                  Android="github_octocat.png"
                  iOS="github_octocat.png"
                  WinPhone="Assets/github_octocat.png"/>
              </Image.Source>
            </Image>
            <Entry
              HorizontalOptions="Center"
              x:Name="UsernameEntry"
              Style="{StaticResource EntryStyle}"
              Placeholder="Username" />
            <Entry
              HorizontalOptions="Center"
              x:Name="PasswordEntry"
              Style="{StaticResource EntryStyle}"
              Placeholder="Password"
              IsPassword="True"/>
          <Button
            Margin="10, 5"
            BackgroundColor="#7dbbe6"
            HorizontalOptions="Fill"
            Clicked="OnLogin"
            x:Name="LoginButton"
            Text="Login">
            <Button.HeightRequest>
              <OnPlatform x:TypeArguments="x:Double" Android="50" iOS="30" WinPhone="30"/>
            </Button.HeightRequest>
          </Button>
          </StackLayout>
      </Frame>
      <ContentView
          AbsoluteLayout.LayoutFlags="PositionProportional"
          AbsoluteLayout.LayoutBounds="1, 0, -1, -1">
        <ContentView.GestureRecognizers>
          <TapGestureRecognizer Tapped="OnCloseButtonTapped"/>
        </ContentView.GestureRecognizers>
        <Image
          x:Name="CloseImage"
          HeightRequest="30"
          WidthRequest="30">
          <Image.Source>
            <OnPlatform
              x:TypeArguments="ImageSource"
              Android="close_circle_button.png"
              iOS="close_circle_button.png"
              WinPhone="Assets/close_circle_button.png"/>
          </Image.Source>
        </Image>
      </ContentView>
    </AbsoluteLayout>
  </ScrollView>

我刚刚尝试了一个新的项目,下面是它对我来说的样子。关闭按钮始终位于框架后面。在这里你可以找到repo


删除了框架并将一些属性移动到StackLayout上。相关错误


删除了框架并将一些属性移动到StackLayout上。相关错误



这是一个bug,在你的相框上设置hashadow=“False”,它应该可以工作。

这是一个bug,在你的相框上设置hashadow=“False”,它应该可以工作。

我已经尝试过了,但没有问题,你能分享你的想法吗project@ColeXia奇怪。我一对一地复制代码,没有任何更改。我将尝试一个空的项目,并张贴链接here@ColeXia请看我更新的问题。我添加了截图和小项目链接。无法构建它。您使用的是什么VS?@YuriS VS 2017 premium。当你尝试建造时,你得到了什么?我已经尝试过了,但没有问题,你能分享你的想法吗project@ColeXia奇怪。我一对一地复制代码,没有任何更改。我将尝试一个空的项目,并张贴链接here@ColeXia请看我更新的问题。我添加了截图和小项目链接。无法构建它。您使用的是什么VS?@YuriS VS 2017 premium。当你们尝试构建的时候,你们得到了什么?我认为那个框架只是用来给弹出窗口提供漂亮的带阴影的边框。你是说框架总是在上面?这就是解决办法。非常感谢。谢谢你找到bugzilla条目,我刚刚订阅了更新。我认为框架只是用来给弹出窗口添加阴影的漂亮边框。你是说框架总是在上面?这就是解决办法。非常感谢。感谢您找到bugzilla条目,我刚刚订阅了更新
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:test"
             x:Class="test.MainPage">
    <ContentPage.Resources>
        <ResourceDictionary>
            <Style x:Key="EntryStyle" TargetType="Entry">
                <Setter Property="PlaceholderColor" Value="#9cdaf1"/>
                <Setter Property="TextColor" Value="#7dbbe6"/>
            </Style>
        </ResourceDictionary>
    </ContentPage.Resources>
    <ContentPage.Content>
        <ScrollView
    HorizontalOptions="Center"
    VerticalOptions="Center">
            <AbsoluteLayout>

                    <StackLayout Margin="15" BackgroundColor="White"
                    IsClippedToBounds="True"
                    Padding="10, 5"
                    Spacing="3">
                        <Image
                          HorizontalOptions="Center"
                          x:Name="OctocatImage"
                          Margin="10"
                          HeightRequest="150"
                          WidthRequest="150">
                            <Image.Source>
                                <OnPlatform
                                  x:TypeArguments="ImageSource"
                                  Android="icon.png"
                                 />
                            </Image.Source>
                        </Image>
                        <Entry
              HorizontalOptions="Center"
              x:Name="UsernameEntry"
              Style="{StaticResource EntryStyle}"
              Placeholder="Username" />
                        <Entry
              HorizontalOptions="Center"
              x:Name="PasswordEntry"
              Style="{StaticResource EntryStyle}"
              Placeholder="Password"
              IsPassword="True"/>
                        <Button
            Margin="10, 5"
            BackgroundColor="#7dbbe6"
            HorizontalOptions="Fill"

            x:Name="LoginButton"
            Text="Login">
                            <Button.HeightRequest>
                                <OnPlatform x:TypeArguments="x:Double" Android="50" iOS="30" WinPhone="30"/>
                            </Button.HeightRequest>
                        </Button>
                    </StackLayout>

                <ContentView
          AbsoluteLayout.LayoutFlags="PositionProportional"
          AbsoluteLayout.LayoutBounds="1, 0, -1, -1">
                    <Image
          x:Name="CloseImage"
          HeightRequest="30"
          WidthRequest="30">
                        <Image.Source>
                            <OnPlatform
              x:TypeArguments="ImageSource"
              Android="close_circle_button.png"
             />
                        </Image.Source>
                    </Image>
                </ContentView>
            </AbsoluteLayout>
        </ScrollView>
    </ContentPage.Content>


</ContentPage>