Compartir a través de


Modo de color heredado de VisualElement en Android

Algunas de las vistas Xamarin.Forms presentan un modo de color heredado. En este modo, cuando la propiedad IsEnabled de la vista se establece en false, la vista invalidará los colores establecidos por el usuario con los colores nativos predeterminados para el estado deshabilitado. Para la compatibilidad con versiones anteriores, este modo de color heredado sigue siendo el comportamiento predeterminado para las vistas admitidas.

Esta característica específica de la plataforma Android deshabilita este modo de color heredado, de modo que los colores establecidos en una vista por el usuario permanezcan incluso cuando la vista esté deshabilitada. Se consume en XAML estableciendo la propiedad adjunta VisualElement.IsLegacyColorModeEnabled en false:

<ContentPage ...
             xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core">
    <StackLayout>
        ...
        <Button Text="Button"
                TextColor="Blue"
                BackgroundColor="Bisque"
                android:VisualElement.IsLegacyColorModeEnabled="False" />
        ...
    </StackLayout>
</ContentPage>

Como alternativa, se puede consumir desde C# mediante la API fluida:

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

_legacyColorModeDisabledButton.On<Android>().SetIsLegacyColorModeEnabled(false);

El método VisualElement.On<Android> especifica que esta plataforma específica solo se ejecutará en Android. El método VisualElement.SetIsLegacyColorModeEnabled, en el espacio de nombres Xamarin.Forms.PlatformConfiguration.AndroidSpecific, se usa para controlar si el modo de color heredado está deshabilitado. Además, el método VisualElement.GetIsLegacyColorModeEnabled se puede usar para devolver información sobre si el modo de color heredado está deshabilitado.

El resultado es que el modo de color heredado se puede deshabilitar, de modo que los colores establecidos en una vista por el usuario permanezcan incluso cuando la vista esté deshabilitada:

Modo de color heredado deshabilitado

Nota:

Al establecer un elemento VisualStateGroup en una vista, se omite completamente el modo de color heredado. Para más información sobre los estados visuales, consulte el Xamarin.FormsAdministrador de estado visual.