Compartilhar via


Modo de cor legado do VisualElement no Android

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

Esse modo de cor herdado é específico da plataforma Android para que as cores definidas em uma visualização pelo usuário permaneçam mesmo quando a visualizaçã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 esse específico da plataforma só será executado 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 cor herdado pode ser desativado, de modo que as cores definidas em uma exibição pelo usuário permaneçam mesmo quando a exibição estiver desabilitada:

Modo de cor herdado desativado

Observação

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