这篇文章主要介绍了解决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 SearchView不显示搜索icon的问题


基础教程推荐
- Android多返回栈技术 2023-04-15
- iOS开发教程之XLForm的基本使用方法 2023-05-01
- 解决Android Studio突然不显示logcat日志的问题 2023-02-04
- Flutter绘图组件之CustomPaint使用详解 2023-05-12
- Android中的webview监听每次URL变化实例 2023-01-23
- IOS应用内跳转系统设置相关界面的方法 2022-11-20
- Flutter手势密码的实现示例(附demo) 2023-04-11
- IOS 播放系统提示音使用总结(AudioToolbox) 2023-03-01
- Android开发使用RecyclerView添加点击事件实例详解 2023-06-15
- android studio按钮监听的5种方法实例详解 2023-01-12