解决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的问题 ,希望对大家有所帮助
下一篇: jquery和ajax的关系详细介绍
推荐阅读
-
解决Android SearchView不显示搜索icon的问题
-
Vue中android4.4不兼容问题的解决方法
-
分享Android平板电脑上开发应用程序不能全屏显示的问题解决
-
Android拍照保存在系统相册不显示的问题解决方法
-
Android--解决图片保存到相册显示1970年1月1日 8:00的问题
-
解决Android Studio突然不显示logcat日志的问题
-
Android ImageView 不显示JPEG图片的问题解决
-
Android适配利用webview加载后图片显示过大的问题解决
-
解决Android Studio新版本(3.0以上)与butterknife不兼容的问题
-
Android解决ScrollView下嵌套ListView和GridView中内容显示不全的问题