安卓系统

有没有办法更改Android Xamarin Forms Picker的文本颜色? (弹出的微调器,而不是显示所做选择的实际控件。)

我已经尝试过了,但Spinner始终为null。

public class CustomPickerRenderer : PickerRenderer
{
   protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
  {

    base.OnElementChanged(e);
    if (e.OldElement == null)
    {

        CustomPicker element = (CustomPicker)this.Element;
        var nativePickerView = (global::Android.Widget.TextView) Control;

        element.BackgroundColor = Color.Transparent;
        nativePickerView.SetBackgroundColor(element.BackgroundColor.ToAndroid());
        nativePickerView.SetCursorVisible(true);
        nativePickerView.SetTextColor(Color.Black.ToAndroid());



        int spinnerId = nativePickerView.Context.Resources.GetIdentifier("android:id/Spinner", null, null);
        var spinnerView = (nativePickerView.FindViewById(spinnerId) as Spinner);
        if (spinnerView != null) spinnerView.SetBackgroundColor(Color.Black.ToAndroid());
    }
}

最佳答案

PickerRenderer内部使用NumberPicker在AlertDialog中显示选择。我不想说很多人在我想要简单自定义时对我说的话,但是您可能需要自定义渲染器。 Custom Renderers Guide。即使使用自定义渲染器,也很难进入私有领域,因此您可能希望对Xamarin.Forms进行“自行拥有”控制,从而使您可以更好地控制元素外观。

10-07 19:45