如何解决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 举报,一经查实,本站将立刻删除。