Android の VisualElement レガシ カラー モード

サンプルのダウンロードサンプルのダウンロード

一部のビューには Xamarin.Forms 、従来のカラー モードがあります。 このモードでは、ビューの プロパティが にfalse設定されている場合IsEnabled、ビューはユーザーが設定した色を無効状態の既定のネイティブ 色でオーバーライドします。 下位互換性のため、このレガシ カラー モードは、サポートされているビューの既定の動作のままです。

この Android プラットフォーム固有では、この従来のカラー モードが無効になるため、ユーザーがビューに設定した色は、ビューが無効になっている場合でも維持されます。 添付プロパティfalseを に設定VisualElement.IsLegacyColorModeEnabledすることで XAML で使用されます。

<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 設定すると、レガシ カラー モードは完全に無視されます。 ビジュアル状態の詳細については、「Visual State Manager」を参照してくださいXamarin.Forms