温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Android中SearchView不显示搜索icon怎么办

发布时间:2021-07-12 14:06:48 来源:亿速云 阅读:112 作者:小新 栏目:移动开发

这篇文章主要介绍了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

到此问题完美解决。

感谢你能够认真阅读完这篇文章,希望小编分享的“Android中SearchView不显示搜索icon怎么办”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI