Sombras paralelas de ImageButton en Android
Esta funcionalidad específica de la plataforma Android se usa para habilitar una sombra paralela en un control ImageButton
. Se consume en XAML estableciendo la propiedad enlazable ImageButton.IsShadowEnabled
en true
, junto con una serie de propiedades enlazables opcionales adicionales que controlan la sombra paralela:
<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>
Como alternativa, se puede consumir desde C# mediante la API fluida:
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);
Importante
Una sombra paralela se dibuja como parte del fondo del control ImageButton
, y el fondo solo se dibuja si se establece la propiedad BackgroundColor
. Por lo tanto, no se dibujará una sombra paralela si la propiedad ImageButton.BackgroundColor
no está establecida.
El método ImageButton.On<Android>
especifica que esta plataforma específica solo se ejecutará en Android. El método ImageButton.SetIsShadowEnabled
, en el espacio de nombres Xamarin.Forms.PlatformConfiguration.AndroidSpecific
, se usa para controlar si una sombra paralela está habilitada en ImageButton
. Además, se pueden invocar los métodos siguientes para controlar la sombra paralela:
SetShadowColor
: establece el color de la sombra paralela. El color predeterminado esColor.Default
.SetShadowOffset
: establece el desplazamiento de la sombra paralela. El desplazamiento cambia la dirección en la que se dibuja la sombra y se especifica como un valorSize
. Los valores de estructuraSize
se expresan en unidades independientes del dispositivo, siendo el primer valor la distancia a la izquierda (valor negativo) o a la derecha (valor positivo), y el segundo valor es la distancia superior (valor negativo) o inferior (valor positivo). El valor predeterminado de esta propiedad es (0,0, 0,0), lo que hace que la sombra se muestre alrededor de cada lado deImageButton
.SetShadowRadius
: establece el radio de desenfoque usado para representar la sombra paralela. El valor de radio predeterminado es 10,0.
Nota:
El estado de una sombra paralela se puede consultar llamando a los métodos GetIsShadowEnabled
, GetShadowColor
, GetShadowOffset
y GetShadowRadius
.
El resultado es que se puede habilitar una sombra paralela en ImageButton
: