How to change Picker background Color in Xamarin MAC Platform

不打扰是莪最后的温柔 提交于 2020-01-02 08:14:12

问题


After updating the Xamarin Library and MAC OS to latest system, facing issue in Picker Background color and color of item that is selected/focused in picker for MAC Platform in my visual studio 2017.

Picker that is filled with multiple values

On opening the picker can not able to set the background color and the item that is selected is also not visible because of its color

How can I set the background color of that picker and the color of that focused/selected item of picker?


回答1:


This seems to be caused for the new Theme used by Mojave.

One way to overcome this issue is by setting a value that will be visible on both Light and Dark them, for me it worked the Green.

Adding this to your XAML should be sufficient

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

Making the change only on your MacOs project leaving the others as they are.

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

Note: The TextColor will only affect the selected item text color.

Hope this helps.-




回答2:


To change BackGroundColor of all Picker items for iOS you need to use custom renderer.

Your Picker in shared project

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

In your ContentPage cs file assign ItemsSource to Picker

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

Now in your iOS project add one .cs file name PickerCustomRenderer & add this code

[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;
        }
    }
}

Output



来源:https://stackoverflow.com/questions/53932894/how-to-change-picker-background-color-in-xamarin-mac-platform

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!