1

Ich arbeite an einer Anwendung, in der ich ein Bild als klickbares Symbol verwende, um ein Popup zu schließen. Ich habe das Bild klickbare über TapGestureRecognizer gemacht, wie unten dargestellt:Xamarin Formulare erhöhen Trefferbereich des Bildes

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

Die OnClosePopupTapped Funktion in meinem xaml.cs richtig getroffen wird.

Mein Problem ist, dass nur die obere linke Ecke des Bildes die Funktion auslöst (der Trefferbereich des Bildes ist nicht das vollständige Bild).

Kennt jemand eine Lösung, um den Trefferbereich auf das gesamte Bild statt nur auf die obere linke Ecke zu erhöhen?

Antwort

3

Ein einfacher Weg, um eine größere Hit-Box zu erreichen, wäre, Ihr Bild in ein anderes Steuerelement wie <StackLayout> oder <Frame> mit einer entsprechenden Padding auf dem übergeordneten umbrechen. Dann Ihre Gestenerkenner auf das übergeordnete Anwendung und stellen Sie Ihr Bild

InputTransparent werden sollte wie folgt aussehen:

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

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

InputTransparent wenn auf true gesetzt wird nachfolgend die Eingabe an das Element übergeben, die in diesem Fall ist der Rahmen

auch habe ich es nicht persönlich noch versucht, aber ich denke, die neueste Xamarin.Forms Bild Tasten unterstützt, das eine einfache Lösung, wie auch sein könnte:

<Button Image="x-icon.png" Command="OnClosePopopCommand"/> 
+1

danke für die antwort: D als ein fyi für menschen, die in zukunft auf diese lösung stoßen könnten: für mich hat 'InputTransparent' nicht funktioniert, aber ich habe diesen teil rausgenommen und es geschafft. – indubitablee