2017-03-01 1 views
1

Wir haben einige Schaltflächen mit Bildern und wir sehen nur die Bilder korrekt auf iOS skalieren. Bei Android überlaufen die Bilder die Grenzen der Schaltfläche, so dass wir im Grunde eine vergrößerte Version des Bildes erhalten.Bildfülloptionen auf Xamarin-Schaltflächen, sehen Überlauf auf Android, aber nicht iOS

<Button VerticalOptions="CenterAndExpand" Grid.Column="1" Grid.Row="3"> 
    <Button.Image> 
     <OnPlatform x:TypeArguments="FileImageSource" 
      iOS="Revolutions_Button.png" 
      Android="Revolutions_Button.png" /> 
     </Button.Image> 
</Button> 

Ich habe sogar versucht, HeightRequest und WidthRequest, und auch wenn das funktioniert, ist es nicht wirklich eine tragfähige fix, da ich nicht hart fühlen eine Höhe Codierung und Breite macht Sinn für Größen auf unterschiedlichen Bildschirmskalierung. Aber auch bei diesen Optionen wurde der Button-Container nur skaliert, das Bild wurde noch komplett anders skaliert.

Wie können wir die Bilder so skalieren, dass sie in die Grenzen der Schaltflächen von Android passen?

Antwort

1

Leider unterstützt Standard Button-Steuerelement in Xamarin Forms nicht das Ihre Szenario (großes Bild, skaliert, um kleinere Schaltfläche auf Android anzupassen).

Unten ist, wie das Problem aussieht. Das für die Schaltfläche verwendete Bild ist größer als die Schaltflächengröße (in diesem Beispiel 100x50) und iOS skaliert das Bild, aber Android zeigt nur die oberen 100x50 (oder 200x100, je nach dpi des Geräts) Pixel aus dem Bild an.

iOS vs Android preview of the xaml from the question

Was sind Ihre Optionen?

  1. Am einfachsten wäre use X-Labs ImageButton control. Leider wird dieses Projekt nicht mehr unterstützt.
  2. Erweitern Schaltfläche Renderer für Android-Plattform, die sich um dieses Problem kümmern wird.
  3. Verwenden Sie verschiedene Bilder, für die keine Skalierung/Anpassung erforderlich ist.
  4. Erstellen Sie Ihr eigenes Bild Button-Steuerelement, beschriebenen Beispiele here und hier

Xamarin.Forms sollte Aspect Eigenschaft auf den Button zur Unterstützung der verschiedenen Strategien für die Bildwiedergabe haben, habe ich eine Feature-Request/bug erstellt:

Die Bildkontrolle hat bereits diese Eigenschaft, siehe what are possible values and how they affect image scaling.

ich Xamarin Fehler abgelegt haben, können Sie sich unsere Mailingliste hinzufügen Aktualisierungen erhalten: https://bugzilla.xamarin.com/show_bug.cgi?id=52938

+0

Dank für die ausführliche Antwort. Ich bin überrascht, dass es so verworren ist, etwas zu tun, was wie ein offensichtliches Merkmal erscheint ... Ich denke, wir werden jetzt einfach einen transparenten Knopf auf ein Bild-Objekt legen, damit wir es skalieren können. – sosil

+0

Es ist jetzt ein bestätigter Xamarin.Forms Bug und es gibt Workarounds dazu (wie ImageButton von X-Labs). Hoffe das hilft –

Verwandte Themen