Patrick Goode
Patrick Goode

Reputation: 1452

Xamarin Forms Android search bar remove underline

Hopefully this doesn't get dinged, I've looked at other posts and nothing seems to work.

Code:

  <controls:SearchPageSearchBar Grid.Column="1" Scale=".8" Margin="0,0,0,0" x:Name="searchBar"
                                               BackgroundColor="White"  

                                               SearchCommandParameter="{Binding Text, Source={x:Reference searchBar}}"
                                               Placeholder="Search" >
                        </controls:SearchPageSearchBar>

 public class SearchPageSearchBarDroid : SearchBarRenderer
{
    public SearchPageSearchBarDroid(Context context) : base(context)
    {
    }

    protected override void OnElementChanged(ElementChangedEventArgs<SearchBar> args)
    {
        base.OnElementChanged(args);

        var plateId = Resources.GetIdentifier("android:id/search_plate", null, null);
        var plate = Control.FindViewById(plateId);
        plate.SetBackgroundColor(Android.Graphics.Color.Transparent);

    }
}

Tried all solutions here too https://forums.xamarin.com/discussion/140247/how-can-i-remove-the-underline-in-searbar-on-android

Upvotes: 0

Views: 733

Answers (1)

Leo Zhu
Leo Zhu

Reputation: 14956

[assembly: ExportRenderer(typeof(SearchPageSearchBar), typeof(SearchPageSearchBarDroid))]

i test your code and it works,have you missed the above line in your SearchPageSearchBarDroid ?

[assembly: ExportRenderer(typeof(SearchPageSearchBar), typeof(SearchPageSearchBarDroid))]
namespace App18.Droid
{
   class SearchPageSearchBarDroid:SearchBarRenderer
    {
      public SearchPageSearchBarDroid(Context context) : base(context)
        {
        }

      protected override void OnElementChanged(ElementChangedEventArgs<SearchBar> e)
        {
          base.OnElementChanged(e);
          var plateId = Resources.GetIdentifier("android:id/search_plate", null, null);
          var plate = Control.FindViewById(plateId);
          plate.SetBackgroundColor(Android.Graphics.Color.Transparent);
        }
    }
}

Upvotes: 1

Related Questions