使用自定义渲染器时Xamarin Picker的异常行为?

时间:2019-02-20 12:06:12

标签: c# xamarin xamarin.forms xamarin.android custom-renderer

我需要自定义选择器的文本颜色(Title颜色),这在Xamarin.Forms实现中是不可能的,因此我创建了一个简单的渲染器,可以完成我需要的工作:

using Android.Content;
using MyProj.Droid.Renderers;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

[assembly: ExportRenderer(typeof(Picker), typeof(CustomPickerRenderer))]
namespace MyProj.Droid.Renderers
{
    public class CustomPickerRenderer : PickerRenderer
    {
        public CustomPickerRenderer(Context context) : base(context) { }
        protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
        {
            base.OnElementChanged(e);
            if (Control != null)
            {
                Control.SetHintTextColor(((Color)Application.Current.Resources["TextColor"]).ToAndroid());
            }
        }
    }
}

但是控件的样式已发生很大变化,因此,它不再是响应任何项目上的轻击手势的列表,而是变成了仅响应“确定/取消”按钮的可滚动列表!

图片:

预期样式(在使用自定义渲染器之前):

enter image description here

意外样式(使用自定义渲染器后): enter image description here

1 个答案:

答案 0 :(得分:3)

您的自定义渲染器需要从 Xamarin.Forms.Platform.Android.AppCompat.PickerRenderer 继承,而不是从 Xamarin.Forms.Platform.Android.PickerRenderer 继承。预期的样式。