如何在 Xamarin 中更改选择器弹出框的 colors/style(iOS 上的 运行 应用程序)
How to change colors/style of picker popup box in Xamarin (running app on iOS)
所以我在 Visual Studio 中编码,并在我的 xaml 文件中添加了一个选择器。一切都已设置好并且工作正常。我什至能够更改选择器本身的文本、标题、背景等颜色...
但是当您单击选择器时,会弹出一个框,其中包含要 select 的项目...您如何访问这些 colors/styles 以更改它们?
我的整个应用程序看起来是自定义的,但那个小选择器框看起来是默认的。 (蓝色按钮浅灰色背景和灰色文本)
顺便说一下,我是 运行 iOS 模拟器上的应用程序。
请帮忙。谢谢
根据所提供的信息,我相信您需要为每个平台(iOS 和 Android)制作自定义渲染器,您可以在其中手动更改这些颜色。请提供您的代码。
您需要自定义渲染器来更改项目和按钮样式。
这是一个例子:
[assembly:ExportRenderer(typeof(Picker), typeof(MyiOSPicker))]
namespace App493.iOS
{
public class MyiOSPicker : PickerRenderer, IUIPickerViewDelegate
{
IElementController ElementController => Element as IElementController;
public MyiOSPicker()
{
}
[Export("pickerView:viewForRow:forComponent:reusingView:")]
public UIView GetView(UIPickerView pickerView, nint row, nint component, UIView view)
{
UILabel label = new UILabel
{
//here you can set the style of item!!!
TextColor = UIColor.Red,
Text = Element.Items[(int)row].ToString(),
TextAlignment = UITextAlignment.Center,
};
return label;
}
protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
{
base.OnElementChanged(e);
if (Control != null)
{
UIPickerView pickerView = (UIPickerView)Control.InputView;
pickerView.WeakDelegate = this;
pickerView.BackgroundColor = UIColor.Yellow; //set the background color of pickerview
//To custom the done button
var toolBar = (UIToolbar)Control.InputAccessoryView;
var doneButton = toolBar.Items[1];
UITextAttributes att = new UITextAttributes
{
Font = UIFont.SystemFontOfSize(20.0f, UIFontWeight.Bold),
TextColor = UIColor.Green
};
doneButton.SetTitleTextAttributes(att, UIControlState.Normal);
}
}
}
}
结果如下:
所以我在 Visual Studio 中编码,并在我的 xaml 文件中添加了一个选择器。一切都已设置好并且工作正常。我什至能够更改选择器本身的文本、标题、背景等颜色...
但是当您单击选择器时,会弹出一个框,其中包含要 select 的项目...您如何访问这些 colors/styles 以更改它们?
我的整个应用程序看起来是自定义的,但那个小选择器框看起来是默认的。 (蓝色按钮浅灰色背景和灰色文本)
顺便说一下,我是 运行 iOS 模拟器上的应用程序。
请帮忙。谢谢
根据所提供的信息,我相信您需要为每个平台(iOS 和 Android)制作自定义渲染器,您可以在其中手动更改这些颜色。请提供您的代码。
您需要自定义渲染器来更改项目和按钮样式。
这是一个例子:
[assembly:ExportRenderer(typeof(Picker), typeof(MyiOSPicker))]
namespace App493.iOS
{
public class MyiOSPicker : PickerRenderer, IUIPickerViewDelegate
{
IElementController ElementController => Element as IElementController;
public MyiOSPicker()
{
}
[Export("pickerView:viewForRow:forComponent:reusingView:")]
public UIView GetView(UIPickerView pickerView, nint row, nint component, UIView view)
{
UILabel label = new UILabel
{
//here you can set the style of item!!!
TextColor = UIColor.Red,
Text = Element.Items[(int)row].ToString(),
TextAlignment = UITextAlignment.Center,
};
return label;
}
protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
{
base.OnElementChanged(e);
if (Control != null)
{
UIPickerView pickerView = (UIPickerView)Control.InputView;
pickerView.WeakDelegate = this;
pickerView.BackgroundColor = UIColor.Yellow; //set the background color of pickerview
//To custom the done button
var toolBar = (UIToolbar)Control.InputAccessoryView;
var doneButton = toolBar.Items[1];
UITextAttributes att = new UITextAttributes
{
Font = UIFont.SystemFontOfSize(20.0f, UIFontWeight.Bold),
TextColor = UIColor.Green
};
doneButton.SetTitleTextAttributes(att, UIControlState.Normal);
}
}
}
}
结果如下: