Android 上的 VisualElement 旧版颜色模式
一些 Xamarin.Forms 视图具有旧版颜色模式。 在此模式下,当视图的 IsEnabled
属性设置为 false
时,视图将使用默认本机颜色替代用户设置的处于禁用状态的颜色。 为了向后兼容,这种旧版颜色模式仍然是受支持视图的默认行为。
此 Android 平台特定功能可禁用这种旧版颜色模式,这样即使在视图禁用时,用户对视图设置的颜色也仍然能保留。 其使用方式为,在 XAML 中将 VisualElement.IsLegacyColorModeEnabled
附加属性设置为 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>
或者,可以使用 Fluent API 从 C# 使用它:
using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.AndroidSpecific;
...
_legacyColorModeDisabledButton.On<Android>().SetIsLegacyColorModeEnabled(false);
该 VisualElement.On<Android>
方法指定此平台特定仅在 Android 上运行。 Xamarin.Forms.PlatformConfiguration.AndroidSpecific
命名空间中的 VisualElement.SetIsLegacyColorModeEnabled
方法用于控制是否禁用旧版颜色模式。 此外,VisualElement.GetIsLegacyColorModeEnabled
方法还可用于返回是否禁用了旧版颜色模式。
结果是可以禁用旧版颜色模式,以便即使禁用视图,用户对视图设置的颜色也会保留:
注意
在视图上设置 VisualStateGroup
时,将完全忽略旧版颜色模式。 若要详细了解视觉对象状态,请参阅 Xamarin.Forms 视觉对象状态管理器。