解决Android SearchView不显示搜索icon的问题

 更新时间:2019年05月07日 11:31:57   作者:xing_star  
这篇文章主要介绍了解决Android SearchView不显示搜索icon问题,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

背景:

之前碰到了一个页面展示问题,SearchView放在Toolbar里面,展示在页面顶部,发现进入这个页面后,左上角是箭头图标(表示点击返回),中间区域就是搜索栏,不过看到会显示搜索icon🔍感觉额外丑陋,就想要把它隐藏掉,找了一圈没有找到如何隐藏Android中android.support.v7.widget.SearchView的icon,只好自己慢慢研究,手动调试观察效果了。

解决办法:

经过一段时间的调试,得出了结论,先给出方案。

final ImageView searchIcon = (ImageView) mSearchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon);
mSearchView.post(new Runnable() {
  @Override
  public void run() {
    searchIcon.setImageDrawable(null);
    searchIcon.setVisibility(View.GONE);
  }
});

接着从android.support.v7.widget.SearchView的源码中,找找原因。

private void updateViewsVisibility(final boolean collapsed) {
  mIconified = collapsed;
  // Visibility of views that are visible when collapsed
  final int visCollapsed = collapsed ? VISIBLE : GONE;
  // Is there text in the query
  final boolean hasText = !TextUtils.isEmpty(mSearchSrcTextView.getText());
 
  mSearchButton.setVisibility(visCollapsed);
  updateSubmitButton(hasText);
  mSearchEditFrame.setVisibility(collapsed ? GONE : VISIBLE);
 
  final int iconVisibility;
  if (mCollapsedIcon.getDrawable() == null || mIconifiedByDefault) {
    iconVisibility = GONE;
  } else {
    iconVisibility = VISIBLE;
  }
  mCollapsedIcon.setVisibility(iconVisibility);
 
  updateCloseButton();
  updateVoiceButton(!hasText);
  updateSubmitArea();
}

updateViewsVisibility()方法很关键,会被执行多次,这个方法就决定了mCollapsedIcon是否显示隐藏,通过分析,得出需要将mCollapsedIcon对应的Drawable设置为null,mCollapsedIcon.setVisibility(iconVisibility)才会隐藏搜索图标。代码比较简单,主要是要有意识的去翻看源码,看看内部实现。

mCollapsedIcon = findViewById(R.id.search_mag_icon);

还可以找到SearchView对应的xml布局文件,路径是appcompat-v7/res/layout/abc_search_view.xml

到此问题完美解决。

遗留一个小问题,如果要更换SearchView的closebtn(类似ClearEditText的清空内容的图标)对应的图片资源呢?咱们留到下一篇讲解。

总结

以上所述是小编给大家介绍的解决Android SearchView不显示搜索icon的问题 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

  • Android Activity启动流程刨析

    Android Activity启动流程刨析

    Activity作为Android四大组件之一,他的启动绝对没有那么简单。这里涉及到了系统服务进程,启动过程细节很多,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
    2022-08-08
  • Flutter系统网络图片加载流程解析

    Flutter系统网络图片加载流程解析

    这篇文章主要介绍了Flutter系统网络图片加载流程,从构造函数开始说起,我们以最简单的调用方式举例,当我们使用Image.network(imageUrl)这种方式来显示图片时,Image组件内部image属性就会被赋值NetworkImage,具体操作步骤跟随小编一起看看吧
    2022-05-05
  • Android中ViewPager带来的滑动卡顿问题解决要点解析

    Android中ViewPager带来的滑动卡顿问题解决要点解析

    这里我们主要针对ViewGroup的SwipeRefreshLayout中引入ViewPager所引起的滑动冲突问题进行讨论,一起来看一下Android中ViewPager带来的滑动卡顿问题解决要点解析:
    2016-06-06
  • Android实现歌曲播放时歌词同步显示具体思路

    Android实现歌曲播放时歌词同步显示具体思路

    歌曲播放时歌词同步显示,我们需要读取以上歌词文件的每一行转换成成一个个歌词实体,可根据当前播放器的播放进度与每句歌词的开始时间,得到当前屏幕中央高亮显示的那句歌词
    2013-06-06
  • 2013年 移动App设计13项注意细节总结

    2013年 移动App设计13项注意细节总结

    在过去的一年里,移动成主流也让众多的移动应用如雨后春笋般层出不穷,在众多开发者从中获利的同时竞争也愈演愈烈,如何才能保证自己立于不败之地接下来介绍移动App设计的13大精髓感兴趣的朋友可以了解下啊
    2013-01-01
  • 使用runtime 实现weex 跳转原生页面

    使用runtime 实现weex 跳转原生页面

    这篇文章主要介绍了使用runtime 实现weex 跳转原生页面的相关资料,需要的朋友可以参考下
    2017-01-01
  • Android仿QQ好友详情页下拉顶部图片缩放效果

    Android仿QQ好友详情页下拉顶部图片缩放效果

    这篇文章主要为大家详细介绍了Android仿QQ好友详情页下拉顶部图片缩放效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Android实现三级联动下拉框 下拉列表spinner的实例代码

    Android实现三级联动下拉框 下拉列表spinner的实例代码

    这篇文章介绍了Android实现三级联动下拉框 下拉列表spinner的实例代码,有需要的朋友可以参考一下
    2013-10-10
  • Android MonoRepo多仓和单仓的差别理论

    Android MonoRepo多仓和单仓的差别理论

    这篇文章主要为大家介绍了Android MonoRepo多仓和单仓的差别理论,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Android自定义ImageView实现点击两张图片切换效果

    Android自定义ImageView实现点击两张图片切换效果

    这篇文章主要为大家详细介绍了Android自定义ImageView实现点击两张图片切换效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12

最新评论