如何在 Xamarin MAC 平台中更改选择器背景颜色
How to change Picker background Color in Xamarin MAC Platform
将 Xamarin 库和 MAC OS 更新到最新系统后,选择器背景颜色和 MAC 选择器中 selected/focused 项目的颜色面临问题平台在我的 visual studio 2017.
填充了多个值的选择器
打开选择器时无法设置背景颜色,而且选中的项目也因其颜色不可见
如何设置该选择器的背景颜色和该选择器的 focused/selected 项目的颜色?
要更改 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;
}
}
}
输出
这似乎是由 Mojave 使用的新主题引起的。
解决这个问题的一种方法是设置一个在浅色和深色上都可见的值,对我来说它适用于绿色。
将此添加到您的 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
只会影响所选项目的文本颜色。
希望对您有所帮助。-
将 Xamarin 库和 MAC OS 更新到最新系统后,选择器背景颜色和 MAC 选择器中 selected/focused 项目的颜色面临问题平台在我的 visual studio 2017.
填充了多个值的选择器
打开选择器时无法设置背景颜色,而且选中的项目也因其颜色不可见
如何设置该选择器的背景颜色和该选择器的 focused/selected 项目的颜色?
要更改 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;
}
}
}
输出
这似乎是由 Mojave 使用的新主题引起的。
解决这个问题的一种方法是设置一个在浅色和深色上都可见的值,对我来说它适用于绿色。
将此添加到您的 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
只会影响所选项目的文本颜色。
希望对您有所帮助。-