C# 应用渲染器时选择器布局已更改
为什么在应用自定义渲染器时Picker的布局会发生如此大的变化 应用渲染器后的布局: 如何保留原始布局,但应用自定义渲染器 确认按钮也不再出现了。它们是白色的,如果您单击它们应该在的位置,它们将工作 自定义渲染器:C# 应用渲染器时选择器布局已更改,c#,xamarin,xamarin.forms,custom-renderer,C#,Xamarin,Xamarin.forms,Custom Renderer,为什么在应用自定义渲染器时Picker的布局会发生如此大的变化 应用渲染器后的布局: 如何保留原始布局,但应用自定义渲染器 确认按钮也不再出现了。它们是白色的,如果您单击它们应该在的位置,它们将工作 自定义渲染器: public class MyPickerRenderer : PickerRenderer { protected override void OnElementChanged(ElementChangedEventArgs<Picker> e) {
public class MyPickerRenderer : PickerRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
{
base.OnElementChanged(e);
if (Control != null)
{
var spinner = new Spinner(this.Context);
Control.SetBackgroundColor(Color.Transparent.ToAndroid());
Control.InputType = InputTypes.TextFlagNoSuggestions;
Control.SetTextColor(Color.Red.ToAndroid());
spinner.SetBackgroundColor(Color.Red.ToAndroid());
}
}
}
公共类MyPickerRenderer:PickerRenderer
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(控件!=null)
{
var微调器=新微调器(this.Context);
Control.SetBackgroundColor(Color.Transparent.ToAndroid());
Control.InputType=InputTypes.TextFlagNoSuggestions;
Control.SetTextColor(Color.Red.ToAndroid());
spinner.SetBackgroundColor(Color.Red.ToAndroid());
}
}
}
我也遇到了同样的问题,并发现解决方案如下:
确保您使用的是Xamarin.Forms.Platform.Android.AppCompat.PickerRenderer而不是
Xamarin.Forms.Platform.Android.PickerRenderer
回答如下:
我们需要查看rederer的源代码来帮助它。@Diegrafaelsouza重新加载是否继承XF默认PickerRenderer构造函数?@Diegrafaelsouza是的,请重新加载。在其源代码上,视图在
OnClick
方法中设置选择器的布局,该方法由OnFocusChangeRequested
方法调用,但这是内在的。。。看看这个,也许它能帮你。我看不出任何解释