xaml - 无法关闭 Xamarin Forms 中单击事件的弹出窗口
问题描述
我用过 Rg.Plugins.Popup。我已对齐关闭按钮,该按钮从右侧和顶部对齐在窗口外 50% 的右上角,如下图所示。
现在它按照预期的设计显示,但问题是当我点击它时,只有关闭按钮的内部部分被点击,而外部部分不可点击。所以直到我们点击关闭按钮的内部部分时才能关闭弹出窗口。
我正在分享我的代码以获得更多想法。
<ScrollView Orientation="Horizontal">
<AbsoluteLayout HorizontalOptions="Center"
VerticalOptions="Center"
Padding="0,0,0,0"
Margin="0,0,0,0"
Opacity="1">
<Frame AbsoluteLayout.LayoutBounds="0,0,1,1"
IsClippedToBounds="True"
AbsoluteLayout.LayoutFlags="All"
HasShadow="False"
x:Name="outframe"
Margin="0"
CornerRadius="15"
Padding="0"
OutlineColor="#ffffff"
HorizontalOptions="FillAndExpand"
VerticalOptions="FillAndExpand">
<StackLayout Orientation="Horizontal"
x:Name="stkVideo"
Padding="0">
<Image x:Name="ximage"
Aspect="AspectFill"
HorizontalOptions="FillAndExpand"
VerticalOptions="FillAndExpand"
BackgroundColor="#4A4541" />
<video:VideoPlayer x:Name="trainingPlayer"
DisplayControls="True"
FillMode="ResizeAspectFill"
FlowDirection="LeftToRight"
Volume="100"
Grid.Row="0"
IsVisible="false">
</video:VideoPlayer>
</StackLayout>
</Frame>
<ContentView AbsoluteLayout.LayoutBounds="0.50, 0.50, -1, -1"
AbsoluteLayout.LayoutFlags="PositionProportional">
<Image Source="Play.png"
HeightRequest="{OnIdiom Phone=70,Tablet=85}"
WidthRequest="{OnIdiom Phone=70,Tablet=85}"
Aspect="AspectFit"
VerticalOptions="Center"
HorizontalOptions="Center"
x:Name="icnplay" />
<ContentView.GestureRecognizers>
<TapGestureRecognizer Tapped="TapGestureRecognizer_Tapped_1" />
</ContentView.GestureRecognizers>
</ContentView>
<ContentView AbsoluteLayout.LayoutBounds="1.04, -0.09, -1, -1"
AbsoluteLayout.LayoutFlags="PositionProportional" >
<Image Source="close.png"
HeightRequest="{OnIdiom Phone=35,Tablet=45}"
WidthRequest="{OnIdiom Phone=35,Tablet=45}"
Aspect="AspectFit">
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="TapGestureRecognizer_Tapped"/>
</Image.GestureRecognizers>
</Image>
<ContentView.GestureRecognizers>
<TapGestureRecognizer Tapped="TapGestureRecognizer_Tapped" />
</ContentView.GestureRecognizers>
</ContentView>
</AbsoluteLayout>
</ScrollView>
当用户单击窗口外的关闭按钮部分时,我需要做哪些代码更改才能关闭弹出窗口?
解决方案
问题是关闭按钮位于<AbsoluteLayout>
. 一种解决方案涉及几个步骤:
- 使 AbsoluteLayout 大一些
- 向视频播放器 Frame 添加一个边距,该边距等于 AbsoluteLayout 的大小
- 更新关闭按钮的位置,使其保持在视频播放器的右上角
现在关闭按钮包含在 AbsoluteLayout 中,整个关闭按钮区域将接收并引发点击/点击事件。
推荐阅读
- mongodb - $sort 更改聚合结果顺序后 $limit 的 MongoDB 值
- wxwidgets - 点击 wx.SpinCtrl 后出现 WxPython Pango 错误
- json - json 成功变量返回 undefined ,在 console.log 粘贴后工作
- php - 无法将图像数据写入路径 - 干预图像
- c# - 单列上的 Lambda 表达式 groupby 并获取所有列 orderby 计数
- javascript - Javascript Protractor 比较总和的承诺
- java - 非泛型类可以扩展吗?来自泛型类或接口?
- java - Spring Data Neo4j:按 LocalDate 过滤不起作用
- python - Python:根据条件获取出现次数
- c# - 查找表困境