【发布时间】:2021-09-18 17:00:12
【问题描述】:
在我的 Xamarin 应用程序中,我正在使用工具提示效果(关注此 article)。
页面上有Help Icons,当我点击它时,工具提示出现,如果我点击Stacklayout区域的任何地方,它就会消失,这意味着它工作正常。
有多个Help Icons,我希望如果我点击任何帮助图标,该帮助图标的工具提示只会出现并消失打开的,因为现在可以同时打开多个工具提示。
为此,我添加了一个TapGestureRecognizer,当有人点击帮助图标时,关闭打开的工具提示。但是,我不知道为什么TapGestureRecognizer 甚至没有触发。
.xaml
<StackLayout x:Name="mainstacklayout">
<StackLayout.GestureRecognizers>
<TapGestureRecognizer Tapped="Handle_Tapped"
NumberOfTapsRequired="1" />
</StackLayout.GestureRecognizers>
// Code
<Image Source="drawable/help.png"
WidthRequest="20"
HeightRequest="20"
effects:TooltipEffect.Position="Left"
effects:TooltipEffect.BackgroundColor="#222222"
effects:TooltipEffect.TextColor="#FFFFFF"
effects:TooltipEffect.Text="Tooltip"
effects:TooltipEffect.HasTooltip="True">
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="Handle_Tapped"
NumberOfTapsRequired="1" />
</Image.GestureRecognizers>
</Image>
// Code
</StackLayout>
.xaml.cs
public void Handle_Tapped(object sender, EventArgs args)
{
foreach (var c in mainstacklayout.Children)
{
if (TooltipEffect.GetHasTooltip(c))
{
TooltipEffect.SetHasTooltip(c, false);
TooltipEffect.SetHasTooltip(c, true);
}
}
}
【问题讨论】:
-
工具提示 xaml 是如何工作的?如果它是具有透明背景的模态框,则您的识别器位于活动页面后面,因此无法正常工作。
-
如你所见,它们都可以同时出现在屏幕上,我只希望一个工具提示出现在屏幕上,另一个必须消失。
-
啊,好吧,我没有测试这个,只是查看了代码,但我认为如果你在
TooltipEffect类中更改OnHasTooltipChanged方法,你也许可以将其存档。在`view.Effects.Add(new ControlTooltipEffect())`之前检查现有的,然后view.Effects.Remove(existing); -
我不确定,但也许 TooltipEffect “消耗”了水龙头,所以 TapGestureRecognizer 看不到它。如果设置
effects:TooltipEffect.HasTooltip="False",识别器会触发吗?如果是这样,那么就这样做,并在识别器中,以某种方式将 HasTooltip 设置为 True。
标签: c# .net xamarin xamarin.forms