【问题标题】:How to change Picker background Color in Xamarin MAC Platform如何在 Xamarin MAC 平台中更改选取器背景颜色
【发布时间】:2019-05-24 18:22:47
【问题描述】:

在将 Xamarin 库和 MAC OS 更新到最新系统后,在我的 Visual Studio 2017 中,选择器背景颜色和在 MAC 平台的选择器中选择/聚焦的项目的颜色面临问题。

填充多个值的选择器

在打开选择器时无法设置背景颜色,并且所选项目也因其颜色不可见

如何设置该选择器的背景颜色以及该选择器的焦点/选定项的颜色?

【问题讨论】:

    标签: xamarin xamarin.forms monodevelop xamarin-studio xamarin.mac


    【解决方案1】:

    这似乎是由 Mojave 使用的新主题引起的。

    解决此问题的一种方法是设置一个在 Light 和 Dark 上都可见的值,对我来说,它适用于绿色。

    将其添加到您的 XAML 就足够了

    <Picker.TextColor>
        <OnPlatform x:TypeArguments="Color">
            <On Platform="macOS" Value="Green"/>
        </OnPlatform>
    </Picker.TextColor>
    

    仅在您的 MacOs 项目上进行更改,其他项目保持原样。

    <Picker HorizontalOptions="CenterAndExpand" 
            VerticalOptions="CenterAndExpand">
        <Picker.Items>
            <x:String>Dell</x:String>
            <x:String>HP</x:String>
            <x:String>Mac</x:String>
            <x:String>Asus</x:String>
            <x:String>Lenovo</x:String>
            <x:String>Acer</x:String>
            <x:String>Micrsoft</x:String>
        </Picker.Items>
        <Picker.TextColor>
            <OnPlatform x:TypeArguments="Color">
                <On Platform="macOS" Value="Green"/>
            </OnPlatform>
        </Picker.TextColor>
    </Picker>
    

    注意:TextColor 只会影响所选项目的文本颜色。

    希望这会有所帮助。-

    【讨论】:

    • 从 v3.4 开始,他们现在更改了 OnPlatform xaml。这是OnPlatform Android="foo" iOS="foo" 它只是发出警告
    • 是的,如果没有任何解决方案,这是我已经考虑过的唯一也是最后一个选项。感谢您的指导。
    【解决方案2】:

    要为 iOS 更改所有 Picker 项目中的 BackGroundColor,您需要使用自定义渲染器。

    您在共享项目中的Picker

    <StackLayout>
        <Picker x:Name="picCities" ></Picker>
    </StackLayout>
    

    在您的ContentPage cs 文件中将ItemsSource 分配给Picker

    public MainPage()
    {
        InitializeComponent();
        picCities.ItemsSource = new List<string> { "Hyderabad", "Bhopal", "Indore", "Jabalpur", "Mumbai", "Ahmedabad" };
        picCities.SelectedIndex = 0;
    }
    

    现在在您的 iOS 项目中添加一个 .cs 文件名 PickerCustomRenderer 并添加此代码

    [assembly: ExportRendererAttribute(typeof(Picker), typeof(PickerCustomRenderer))]
    namespace picker.iOS
    {
        public class PickerCustomRenderer : PickerRenderer
        {
            protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
            {
                base.OnElementChanged(e);
                UITextField textField = Control;
                UIPickerView pickerView = textField.InputView as UIPickerView;
                pickerView.BackgroundColor = UIColor.Red;
            }
        }
    }
    

    输出

    【讨论】:

    • 我想更改 Picker 中项目的背景颜色 当打开 Picker 时,列表打开我想更改打开列表的颜色元素列表是浅蓝色我想更改该列表的背景颜色
    • 根据您的问题标题,您需要更改背景颜色。您可以更改选取器背景颜色、选取器文本颜色(项目文本颜色)。没有什么比项目颜色更重要的了。
    • 当打开选择器时,列表打开我想更改打开列表的 bakgroungcolor 在第二张图片中,当我单击选择器时,它会打开元素列表,它是浅蓝色的,我想更改该列表的背景颜色
    • @V-VekP-Tel - 我在答案中添加了屏幕截图。你需要这样的选择器吗?
    • 是的,我想更改选择器列表的背景颜色,但我开发的选择器是用户定义的控件,适用于 MAC OS
    猜你喜欢
    • 2017-06-02
    • 2023-03-04
    • 2018-02-01
    • 2020-06-27
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 2020-03-26
    相关资源
    最近更新 更多