ImageButton Drop Shadows unter Android

Beispiel herunterladen Das Beispiel herunterladen

Diese Android-Plattformspezifische wird verwendet, um einen Schlagschatten auf einem ImageButtonzu aktivieren. Es wird in XAML verwendet, indem die ImageButton.IsShadowEnabled bindbare Eigenschaft auf truefestgelegt wird, zusammen mit einer Reihe zusätzlicher optionaler bindbarer Eigenschaften, die den Schlagschatten steuern:

<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 sie über C# mit der 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 ein Schlagschatten nicht gezeichnet, wenn die ImageButton.BackgroundColor Eigenschaft nicht festgelegt ist.

Die ImageButton.On<Android> -Methode gibt an, dass diese plattformspezifische Version nur unter Android ausgeführt wird. Die ImageButton.SetIsShadowEnabled -Methode im Xamarin.Forms.PlatformConfiguration.AndroidSpecific -Namespace wird verwendet, um zu steuern, ob ein Schlagschatten für ImageButtonaktiviert ist. Darüber hinaus können die folgenden Methoden aufgerufen werden, um den Schlagschatten zu steuern:

  • SetShadowColor – legt die Farbe des Schattens fest. Die Standardfarbe ist Color.Default.
  • SetShadowOffset – legt den Offset des Fallschatten fest. Der Offset ändert die Richtung, in die der Schatten geworfen wird, und wird als Size Wert angegeben. Die Size Strukturwerte werden in geräteunabhängigen Einheiten ausgedrückt, wobei der erste Wert der Abstand nach 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). Dies führt dazu, dass der Schatten um jede Seite von ImageButtongeworfen wird.
  • SetShadowRadius– legt den Unschärferadius fest, der zum Rendern des Schattens verwendet wird. Der Standardwert für den Radius ist 10.0.

Hinweis

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

Das Ergebnis ist, dass ein Schlagschatten für eine ImageButtonaktiviert werden kann:

ImageButton mit Schlagschatten