Modo de color heredado de VisualElement en AndroidVisualElement Legacy Color Mode on Android

Descargar ejemplo Descargar el ejemploDownload Sample Download the sample

Algunas de las Xamarin.Forms vistas presentan un modo de color heredado.Some of the Xamarin.Forms views feature a legacy color mode. En este modo, cuando la IsEnabled propiedad de la vista está establecida en false , la vista invalidará los colores establecidos por el usuario con los colores nativos predeterminados para el Estado deshabilitado.In this mode, when the IsEnabled property of the view is set to false, the view will override the colors set by the user with the default native colors for the disabled state. Por compatibilidad con versiones anteriores, este modo de color heredado sigue siendo el comportamiento predeterminado para las vistas admitidas.For backwards compatibility, this legacy color mode remains the default behavior for supported views.

Este modo específico de la plataforma Android deshabilita este modo de color heredado, de modo que los colores establecidos en una vista por parte del usuario permanecen incluso cuando la vista está deshabilitada.This Android platform-specific disables this legacy color mode, so that colors set on a view by the user remain even when the view is disabled. Se consume en XAML estableciendo la VisualElement.IsLegacyColorModeEnabled propiedad adjunta en false :It's consumed in XAML by setting the VisualElement.IsLegacyColorModeEnabled attached property to 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 usar desde C# con la API fluida:Alternatively, it can be consumed from C# using the fluent API:

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

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

El VisualElement.On<Android> método especifica que este específico de la plataforma solo se ejecutará en Android.The VisualElement.On<Android> method specifies that this platform-specific will only run on Android. [ VisualElement.SetIsLegacyColorModeEnabled ] (XREF: Xamarin.Forms . PlatformConfiguration. AndroidSpecific. VisualElement. SetIsLegacyColorModeEnabled ( Xamarin.Forms . IPlatformElementConfiguration { Xamarin.Forms . PlatformConfiguration. Android, Xamarin.Forms . VisualElement}, System. Boolean)), en el Xamarin.Forms.PlatformConfiguration.AndroidSpecific espacio de nombres, se utiliza para controlar si el modo de color heredado está deshabilitado.The VisualElement.SetIsLegacyColorModeEnabled method, in the Xamarin.Forms.PlatformConfiguration.AndroidSpecific namespace, is used to control whether the legacy color mode is disabled. Además, [ VisualElement.GetIsLegacyColorModeEnabled ] (XREF: Xamarin.Forms . PlatformConfiguration. AndroidSpecific. VisualElement. GetIsLegacyColorModeEnabled ( Xamarin.Forms . IPlatformElementConfiguration { Xamarin.Forms . PlatformConfiguration. Android, Xamarin.Forms . VisualElement})) que se puede usar para devolver si el modo de color heredado está deshabilitado.In addition, the VisualElement.GetIsLegacyColorModeEnabled method can be used to return whether the legacy color mode is disabled.

El resultado es que el modo de color heredado se puede deshabilitar, de modo que los colores establecidos en una vista por parte del usuario permanezcan incluso cuando la vista esté deshabilitada:The result is that the legacy color mode can be disabled, so that colors set on a view by the user remain even when the view is disabled:

Modo de color heredado deshabilitado

Nota

Al establecer VisualStateGroup en una vista, el modo de color heredado se omite por completo.When setting a VisualStateGroup on a view, the legacy color mode is completely ignored. Para obtener más información sobre los Estados visuales, consulte el Xamarin.Forms Visual State Manager.For more information about visual states, see The Xamarin.Forms Visual State Manager.