这篇文章主要介绍了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怎么办”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。