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:
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.