Freigeben über


ImageButton Drop Shadows unter Android

Diese plattformspezifische Android-Plattform wird verwendet, um einen Schlagschatten auf einem ImageButton. Sie wird in XAML verwendet, indem sie die ImageButton.IsShadowEnabled bindungsfähige Eigenschaft trueauf , zusammen mit einer Reihe zusätzlicher optionaler bindbarer Eigenschaften, die den Schlagschatten steuern, festlegen:

<ContentPage ...
             xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core">
    <StackLayout Margin="20">
       <ImageButton ...
                    Source="XamarinLogo.png"
                    BackgroundColor="GhostWhite"
                    android:ImageButton.IsShadowEnabled="true"
                    android:ImageButton.ShadowColor="Gray"
                    android:ImageButton.ShadowRadius="12">
            <android:ImageButton.ShadowOffset>
                <Size>
                    <x:Arguments>
                        <x:Double>10</x:Double>
                        <x:Double>10</x:Double>
                    </x:Arguments>
                </Size>
            </android:ImageButton.ShadowOffset>
        </ImageButton>
        ...
    </StackLayout>
</ContentPage>

Alternativ kann es auch von C# aus über die Fluent-API genutzt werden:

using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.AndroidSpecific;
...

var imageButton = new Xamarin.Forms.ImageButton { Source = "XamarinLogo.png", BackgroundColor = Color.GhostWhite, ... };
imageButton.On<Android>()
           .SetIsShadowEnabled(true)
           .SetShadowColor(Color.Gray)
           .SetShadowOffset(new Size(10, 10))
           .SetShadowRadius(12);

Wichtig

Ein Schlagschatten wird als Teil des ImageButton Hintergrunds gezeichnet, und der Hintergrund wird nur gezeichnet, wenn die BackgroundColor Eigenschaft festgelegt ist. Daher wird kein Schlagschatten gezeichnet, wenn die ImageButton.BackgroundColor Eigenschaft nicht festgelegt ist.

Die ImageButton.On<Android> Methode gibt an, dass diese plattformspezifisch nur auf Android läuft. Die ImageButton.SetIsShadowEnabled Methode im Xamarin.Forms.PlatformConfiguration.AndroidSpecific Namespace wird verwendet, um zu steuern, ob ein Schlagschatten für die ImageButton. Darüber hinaus können die folgenden Methoden aufgerufen werden, um den Schlagschatten zu steuern:

  • SetShadowColor – legt die Farbe des Schlagschatten fest. Die Standardfarbe ist Color.Default.
  • SetShadowOffset – legt den Offset des Schlagschatten fest. Der Offset ändert die Richtung, in der der Schatten gegossen wird, und wird als Size Wert angegeben. Die Size Strukturwerte werden in geräteunabhängigen Einheiten ausgedrückt, wobei der erste Wert der Abstand von links (negativer Wert) oder rechts (positiver Wert) und der zweite Wert der Abstand über (negativer Wert) oder darunter (positiver Wert) ist. Der Standardwert dieser Eigenschaft ist (0,0, 0,0), was dazu führt, dass der Schatten um jede Seite der ImageButton.
  • SetShadowRadius– legt den Weichzeichnerradius fest, der zum Rendern des Schlagschatten verwendet wird. Der Standardradiuswert ist 10,0.

Hinweis

Der Zustand eines Schlagschatten kann abgefragt werden, indem die GetIsShadowEnabledMethoden , GetShadowColor, , GetShadowOffsetund GetShadowRadius Methoden aufgerufen werden.

Das Ergebnis ist, dass ein Schlagschatten für ein ImageButton:

ImageButton mit Schlagschatten