Search code examples
xamlxamarinxamarin.formspicker

How to change Picker underline color in Xamarin Forms


I am using Picker control, by default it shows White underline color on Black screen.

enter image description here

But I need to have white screen background color, then Picker underline is not displaying at all. See below image:

enter image description here

So how can I change Picker underline color

This is my Picker

 <Picker TitleColor="Black" Title="--Select--" />

Solution

  • you could use custom renderer to achieve it:

    for Android:

    [assembly: ExportRenderer(typeof(Picker), typeof(CustomPickerRenderer))]
    namespace App18.Droid
    {
      public class CustomPickerRenderer : PickerRenderer
       {
          private Context context;
          public CustomPickerRenderer(Context context) : base(context)
           {
            this.context = context;
           }
    
          protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
           {
            base.OnElementChanged(e);
            if (Control == null || e.NewElement == null) return;
            //for example ,change the line to red:
            if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
                Control.BackgroundTintList = ColorStateList.ValueOf(Color.Red);
            else
                Control.Background.SetColorFilter(Color.Red, PorterDuff.Mode.SrcAtop);
           }
       }
    }
    

    for iOS:

    [assembly: ExportRenderer(typeof(Picker), typeof(CustomPickerRenderer))]
    namespace App18.iOS
    {
      public class CustomPickerRenderer : PickerRenderer
       {
    
        protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
        {
            base.OnElementChanged(e);
    
            if (Control == null || e.NewElement == null)
                return; 
            Control.Layer.BorderWidth = 1;
            Control.Layer.BorderColor = Color.Red.ToCGColor();
        }
       }
    }