1

我正在开发一个Xamarin.Forms应用程序,在该应用程序中我使用图像作为可点击图标来关闭弹出窗口。我已经通过TapGestureRecognizer如下所示使图像可点击:

<Image Source="x-icon.png" HeightRequest="15" WidthRequest="15">
  <Image.GestureRecognizers>
    <TapGestureRecognizer Tapped="OnClosePopupTapped"/>
  </Image.GestureRecognizers>
</Image>

我的OnClosePopupTapped功能xaml.cs被正确击中。

我的问题是只有图像的左上角触发了该功能(图像的命中区域不是完整的图像)。

有谁知道将点击区域增加到完整图像而不仅仅是左上角的解决方案?

4

1 回答 1

3

实现更大的命中框的一种简单方法是将图像包装在另一个控件中,例如 a<StackLayout>或 a <Frame>,并为父级应用适当的填充。然后,将您的手势识别器应用于父级并将您的图像设置为 InputTransparent

应该看起来像这样:

  <Frame Padding="10">
    <Frame.GestureRecognizers>
      <TapGestureRecognizer Tapped="OnClosePopupTapped"/>
    </Frame.GestureRecognizers>

    <Image Source="x-icon.png" HeightRequest="15" WidthRequest="15" InputTransparent="True"/>
  </Frame>

InputTransparent设置为 true 时会将输入传递给下面的元素,在这种情况下是 Frame

另外,我还没有亲自尝试过,但我认为最新的 Xamarin.Forms 支持图像按钮,这可能也是一个简单的解决方案:

<Button Image="x-icon.png" Command="OnClosePopopCommand"/>
于 2016-04-14T21:38:11.667 回答