更改SearchView搜索图标Xamarin.Android

时间:2018-09-17 12:42:27

标签: c# xamarin xamarin.forms xamarin.android

我正在尝试在SearchBarRenderer Android自定义渲染器中更改搜索图标

这就是我尝试过的

 Control.Iconified = false;
 Control.SetIconifiedByDefault(false);

 var searchView = Control.FindViewById<ImageView>(Resource.Id.search_button);
 var searchicon = Resources.GetDrawable(Resource.Drawable.search);
 searchView.SetImageDrawable(searchicon);

但是,searchIcon始终为空

当我遍历SearchView的子级时,我发现了ID为 16909229 的图像视图,但是设置该图像的可绘制图像并没有更改搜索图标

2 个答案:

答案 0 :(得分:2)

  

我正在尝试在SearchBarRenderer Android自定义渲染器中更改搜索图标

像这样修改您的代码:

[assembly:ExportRenderer(typeof(SearchBar), typeof(MySearchBarRenderer))]
namespace yourprjectnamespace
{
    public class MySearchBarRenderer : SearchBarRenderer
    {
        public MySearchBarRenderer(Context context) : base(context)
        {
        }

        protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.SearchBar> e)
        {
            base.OnElementChanged(e);

            if (Control != null)
            {
                var searchView = Control;

                int searchViewCloseButtonId = Control.Resources.GetIdentifier("android:id/search_mag_icon", null, null);

                var closeIcon = searchView.FindViewById(searchViewCloseButtonId);
                (closeIcon as ImageView).SetImageResource(Resource.Mipmap.icon);
            }
        }
    }
}

Effect

答案 1 :(得分:0)

如果您使用的是android.support.v7.widget.SearchView,可以尝试这样设置:

var searchIcon = (ImageView) searchView.FindViewById(Resource.Id.search_mag_icon);
searchIcon.SetImageResource(Resource.Drawable.my_custom_search_icon);

来源:https://stackoverflow.com/a/20362491/6248510这不是一个相同的问题,但与之相关,并且在答案中包含了一种设置方式