Формы Xamarin увеличивают область обращения изображения

Я работаю над Xamarin.Forms приложением, в котором я использую изображение в качестве интерактивного значка, чтобы закрыть всплывающее окно. Я сделал изображение интерактивным с помощью TapGestureRecognizer, как показано ниже:

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

Функция OnClosePopupTapped в моем xaml.cs выполняется правильно.

Моя проблема в том, что только верхний левый угол изображения запускает функцию (область попадания изображения не является полным изображением).

Кто-нибудь знает решение увеличить область попадания до полного изображения, а не только в верхнем левом углу?


person indubitablee    schedule 14.04.2016    source источник


Ответы (1)


Простым способом добиться большего хитбокса было бы заключить ваше изображение в другой элемент управления, например <StackLayout> или <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/" rel="nofollow"> InputTransparent, если установлено значение true, передаст ввод в элемент. ниже, который в данном случае является Frame

Кроме того, я еще не пробовал это лично, но я думаю, что последняя версия Xamarin.Forms поддерживает кнопки изображений, что также может быть простым решением:

<Button Image="x-icon.png" Command="OnClosePopopCommand"/>
person Joe    schedule 14.04.2016
comment
спасибо за ответ: D в качестве fyi для людей, которые могут столкнуться с этим решением в будущем: для меня InputTransparent не сработало, но я взял эту часть, и она сработала. - person indubitablee; 15.04.2016