Partilhar via


Modo de cor herdado do VisualElement no Android

Algumas das Xamarin.Forms exibições apresentam um modo de cores herdado. Nesse modo, quando a IsEnabled propriedade do modo de exibição é definida como false, o modo de exibição substituirá as cores definidas pelo usuário pelas cores nativas padrão para o estado desabilitado. Para compatibilidade com versões anteriores, esse modo de cor herdado continua sendo o comportamento padrão para exibições com suporte.

Este dispositivo específico da plataforma Android desativa esse modo de cores herdado, para que as cores definidas em uma exibição pelo usuário permaneçam mesmo quando a exibição estiver desativada. Ele é consumido em XAML definindo a propriedade anexada VisualElement.IsLegacyColorModeEnabled como 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, ele pode ser consumido do C# usando a API fluente:

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

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

O VisualElement.On<Android> método especifica que essa plataforma específica só será executada no Android. O VisualElement.SetIsLegacyColorModeEnabled método, no Xamarin.Forms.PlatformConfiguration.AndroidSpecific namespace, é usado para controlar se o modo de cor herdado está desabilitado. Além disso, o VisualElement.GetIsLegacyColorModeEnabled método pode ser usado para retornar se o modo de cor herdado está desabilitado.

O resultado é que o modo de cores herdado pode ser desabilitado, de modo que as cores definidas em um modo de exibição pelo usuário permaneçam mesmo quando o modo de exibição estiver desabilitado:

Modo de cores herdadas desativado

Observação

Ao definir um em uma exibição, o modo de VisualStateGroup cor herdado é completamente ignorado. Para obter mais informações sobre estados visuais, consulte O Xamarin.Forms Gerenciador de Estado Visual.