微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Xamarin Click仅适用于AbsoluteLayout中的1个视图

如何解决Xamarin Click仅适用于AbsoluteLayout中的1个视图

我有问题。我使用以下代码创建了一个浮动操作按钮菜单https://github.com/Polarts/CrossFAB

现在,我将其添加到我的代码中,如下所示:

<ContentPage.Content>
    <AbsoluteLayout VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
        <ScrollView Orientation="Vertical" AbsoluteLayout.LayoutBounds="0,1,1"
                AbsoluteLayout.LayoutFlags="All">
            <StackLayout Orientation="Vertical">
                <Label Text="Undone" TextColor="Black" FontSize="26" FontAttributes="Bold" Margin="10" />
            </StackLayout>
        </ScrollView>

        <c:FloatingMenu Margin="0,10,10" BGColor="Gray" OpenIcon="Share.png" CloseIcon="X.png"
                        AbsoluteLayout.LayoutBounds="0,1" AbsoluteLayout.LayoutFlags="All">
            <c:FloatingButton x:Name="FB" BGColor="Blue" IconSrc="Facebook.png"/>
            <c:FloatingButton x:Name="TW" BGColor="White" IconSrc="Twitter.png"/>
            <c:FloatingButton x:Name="TB" BGColor="Navy" IconSrc="Tumblr.png"/>
        </c:FloatingMenu>
    </AbsoluteLayout>
</ContentPage.Content>

我使用了AbsoluteLayout,因为FloatingMenu必须位于右下角,但是问题是现在我可以使用Floating Action Button,但是{ {1}}不起作用。当我将ScrollView代码放在FloatingMenu上方时,ScrollView停止工作,只能滚动。

如何将两个项目都用于点击?

解决方法

在视图上设置AbsoluteLayout.LayoutBounds="0,1,1"AbsoluteLayout.LayoutFlags="All"时,是说您希望视图从左上角开始,并且希望它占据整个宽度和视图的高度。

由于在两个视图上都为此设置了LayoutBounds,因此实际上您拥有两个视图,这些视图占据了整个屏幕的顶部。您可以通过在任一视图中添加背景色来进行测试,看看会发生什么。因此,无论您将第二个视图放在哪个位置都可以吸引人,因为它是最上面的一个。

如果您希望FloatingMenu位于右下角,则需要在该视图上固定布局边界以体现这一点。

类似的事情可能会让您入门:

<c:FloatingMenu
    Margin="0,10,10"
    BGColor="Gray" 
    OpenIcon="Share.png" 
    CloseIcon="X.png"
    AbsoluteLayout.LayoutBounds=".95,.95,50,50" 
    AbsoluteLayout.LayoutFlags="PositionProportional">

这表示我们希望将视图放置在屏幕上方95%且屏幕下方95%(设置的宽度和高度为50)。之所以说PositionProportional是因为我们希望读取位置,即前两个数字而不是绝对值。

您可能还需要调整“浮动菜单”视图的布局。我怀疑您对“垂直”和“水平”选项所做的操作类似EndAndExpand,而在固定绝对布局时可能无法按预期工作。

确保还要查看AbsoluteLayout上的文档。

,

PositionProportional,表示x和y值为 解释为成比例的,而大小值解释为 绝对的。

位置(0,0)将孩子放在左上角,而位置(1,1)将孩子放在右下角,(0.5,0.5)居中在AbsoluteLayout中的孩子。

所以您可以尝试进行如下更改:

<ContentPage.Content>
    <AbsoluteLayout VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
        <ScrollView Orientation="Vertical" AbsoluteLayout.LayoutBounds="0,1"
            AbsoluteLayout.LayoutFlags="All">
            <StackLayout Orientation="Vertical">
                <Label Text="Undone" TextColor="Black" FontSize="26" FontAttributes="Bold" Margin="10" />
               
            </StackLayout>
        </ScrollView>

        <c:FloatingMenu  Margin="0,10" BGColor="Gray" OpenIcon="Share.png" CloseIcon="X.png"
                    AbsoluteLayout.LayoutBounds="1,1" AbsoluteLayout.LayoutFlags="PositionProportional">
            <c:FloatingButton x:Name="FB" BGColor="Blue" IconSrc="Facebook.png"/>
            <c:FloatingButton x:Name="TW" BGColor="White" IconSrc="Twitter.png"/>
            <c:FloatingButton x:Name="TB" BGColor="Navy" IconSrc="Tumblr.png"/>
        </c:FloatingMenu>
    </AbsoluteLayout>
</ContentPage.Content>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。