【问题标题】:Changing SearchView Search Icon Xamarin.Android更改 SearchView 搜索图标 Xamarin.Android
【发布时间】:2018-09-17 12:42:26
【问题描述】:

我正在尝试更改 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 的图像视图,但设置可绘制的图像并没有改变搜索图标

【问题讨论】:

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


    【解决方案1】:

    我正在尝试更改 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.

    【讨论】:

      【解决方案2】:

      如果你使用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 这不是同一个问题,但它与之相关,并且在答案中包含了一种设置方法

      【讨论】:

      • 可能适用于 Android 但不适用于 xamarin
      • 它会抛出任何错误吗?为 Xamarin 改编代码
      • 其实不是,Resource.Id 不同。你写了Resource.Id.search_button 而我写的是Resource.Id.search_mag_icon
      猜你喜欢
      • 2016-07-08
      • 1970-01-01
      • 2018-05-02
      • 1970-01-01
      • 2014-11-30
      • 1970-01-01
      • 2013-06-03
      • 1970-01-01
      • 2012-12-31
      相关资源
      最近更新 更多