Android での ImageButton ドロップ シャドウ

この Android プラットフォーム固有設定は、ImageButton でドロップ シャドウを有効にするために使用されます。 これは、ImageButton.IsShadowEnabled バインド可能プロパティを true に設定することにより、ドロップ シャドウを制御する複数の省略可能なその他のバインド可能プロパティと共に XAML で使用されます。

<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>

あるいは、Fluent API を使用して C# から使用することもできます。

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);

重要

ドロップ シャドウは ImageButton の背景の一部として描画され、背景は BackgroundColor プロパティが設定されている場合にのみ描画されます。 したがって、ImageButton.BackgroundColor プロパティが設定されていない場合、ドロップ シャドウは描画されません。

ImageButton.On<Android> メソッドは、このプラットフォーム固有設定が Android 上でのみ実行されるように指定します。 Xamarin.Forms.PlatformConfiguration.AndroidSpecific 名前空間の ImageButton.SetIsShadowEnabled メソッドは、ImageButton でドロップ シャドウを有効にするかどうかを制御するために使用されます。 さらに、ドロップ シャドウを制御するために、次のメソッドを呼び出すことができます:

  • SetShadowColor – ドロップ シャドウの色を取得または設定します。 既定の色は Color.Default です。
  • SetShadowOffset – ドロップ シャドウのオフセットを設定します。 オフセットは、シャドウがキャストされる方向を変更し、Size 値として指定します。 Size 構造体の値は、デバイスに依存しない単位で表され、最初の値は左 (負の値) または右 (正の値) までの距離、2 番目の値は上 (負の値) または下の距離 (正の値) で表されます。 このプロパティの既定値は (0.0, 0.0) です。これにより、ImageButton の各辺にシャドウがキャストされます。
  • SetShadowRadius– ドロップ シャドウのレンダリングに使用するぼかし半径を設定します。 既定の半径の値は 10.0 です。

Note

ドロップ シャドウの状態は、GetIsShadowEnabledGetShadowColorGetShadowOffsetGetShadowRadius メソッドを呼び出すことによって照会できます。

その結果、ImageButton でドロップ シャドウを有効にできます:

ドロップ シャドウ付きの ImageButton