以下所有内容都是针对android.support.v7.widget.SearchView,相比于默认的SearchView拥有更多的可配置性。
1. SearchView默认的状态是一个搜索图标,点一下才会展开输入框,如果想默认处于展开状态,可以调用如下方法:
searchView.setIconifiedByDefault(false);
带来的副作用是此时的SearchView处于 focus 状态,软键盘会自动打开,如果不希望SearchView自动获得焦点,可以调用如下的方法:
searchView.setFocusable(false); searchView.clearFocus();
setFocusable(false)在初始化SearchView的时候是必须的
2. 获取SearchView输入框
SearchView.SearchAutoComplete searchTextArea = (SearchView.SearchAutoComplete) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
之后就可以通过 searchTextArea 对字体、文本等属性进行修改,比如修改字体大小
searchTextArea.setTextSize(TypedValue.COMPLEX_UNIT_SP, 13);
3. 获取输入框底部线条
View v = searchView.findViewById(android.support.v7.appcompat.R.id.search_plate);
如果希望底部线条看不来,可以设置它的背景色和SearchView保持一致,例如:
v.setBackgroundColor(Color.WHITE);
4. 模拟iOS圆角和添加取消按钮
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/lightGreyBg"> <FrameLayout android:layout_width="match_parent" android:layout_height="30dp" android:layout_marginStart="8dp" android:layout_marginEnd="8dp" android:layout_marginTop="6dp" android:layout_marginBottom="6dp"> <android.support.v7.widget.SearchView android:id="@+id/searchView" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/white_bg_round_radius_4dp"/> <TextView android:id="@+id/cancelView" android:layout_width="45dp" android:layout_height="30dp" android:text="取消" android:textColor="@color/colorPrimary" android:textSize="@dimen/font_size_common" android:layout_gravity="end" android:gravity="center" android:visibility="gone"/> </FrameLayout> </LinearLayout>
再根据输入框是否处于编辑状态动态修改SearchView的margin和取消按钮的可见性
FrameLayout.LayoutParams rightMargin = new FrameLayout.LayoutParams( FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT); rightMargin.setMarginEnd((int) DisplayUtils.dp2px(this, 45)); FrameLayout.LayoutParams zeroMargin = new FrameLayout.LayoutParams( FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT); zeroMargin.setMarginEnd(0); searchView.setOnQueryTextFocusChangeListener((view, hasFocus) -> { if (hasFocus) { searchView.setLayoutParams(rightMargin); cancelView.setVisibility(View.VISIBLE); } else { searchView.setLayoutParams(zeroMargin); cancelView.setVisibility(View.GONE); } });
同时可以对取消按钮添加监听,通过如下示例恢复SearchView的原始状态
searchTextArea.setText(""); searchView.clearFocus();
5. 添加搜索下拉框,同时添加透明蒙版的效果
在SearchView下添加显示区域
<FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> <!-- 蒙版 --> <View android:layout_width="match_parent" android:layout_height="match_parent" android:background="#80323232" /> <ListView android:id="@+id/matchListView" android:layout_width="match_parent" android:layout_height="wrap_content" android:divider="@null" android:background="@android:color/white"/> </FrameLayout>
实现SearchView.OnQueryTextListener,在两个方法中动态更新ListView内容
相关推荐
android之searchview
实现了SearchView+ToolBar的基本应用,引入了展开、收缩事件;文本提交获取、变化事件等
主要为大家详细介绍了Android搜索框SearchView的功能和用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
这次解析主要围绕android.support.v7.widget包下的SearchView(API >= 7),android.widget.SearchView支持API >= 11, 另外有个android.support.v4.widget.SearchViewCompat。 目录 1. 源码解析 1.1 继承关系 1.2 ...
android 搜索功能 SearchView+RecyclerView实现 搜索结果高亮显示,android studio工程,导入就可以正常使用
博文Demo,文章链接:http://blog.csdn.net/Airsaid/article/details/51087226
SearchView是Android原生的搜索框控件,它提供了一个用户界面,用于用户搜索查询。 SearchView默认是展示一个search的icon,点击icon展开搜索框,如果你想让搜索框默认就展开,可以通过setIconifiedByDefault(false...
actionBar+searchView+listView实现搜索;包含两个例子;分别展示了android实现搜索的两种不同方法
就想要把它隐藏掉,找了一圈没有找到如何隐藏Android中android.support.v7.widget.SearchView的icon,只好自己慢慢研究,手动调试观察效果了。 解决办法: 经过一段时间的调试,得出了结论,先给出方案。 final ...
导航搜索视图Android SearchView 带有导航按钮(下一个和上一个)来遍历结果。 此库可帮助您在 SearchView 小部件中添加导航功能。 NavigationSearchView 内置了两个按钮,以及清除搜索按钮,可帮助您轻松浏览搜索...
Android-SearchView 动感十足的搜索加载View。 效果图 感谢 GcsSloop / AndroidNote 关于我 如果对你有帮助,请 star 一下,然后 follow 我,给我增加一下分享动力,谢谢! 如果你有什么疑问或者问题,可以...
SearchView使用实例
API 16+ (显示 API 21 及更高版本的动画,否则淡出动画) 两种风格 打开时自动隐藏 TabLayout 的选项 文本和动画监听器 自定义选项
主要为大家详细介绍了Android SearchView搜索框组件的使用方法,即时搜索提示功能的实现,感兴趣的小伙伴们可以参考一下
SearchView(代码已设置为展开,解决部分机型展开后有两个搜索图标的问题,可以自定义编辑框内文字颜色,去掉底部下划线,去掉焦点,编辑框内容为空时禁止delete事件).rar,太多无法一一验证是否可用,程序如果跑不...
SearchView轨迹动画 PathMeasure来实现path的截取,实现轨迹动画
在Android开发中,当系统数据项比较多时,常常会在app添加搜索功能,方便用户能快速获得需要的数据。搜索栏对于我们并不陌生,在许多app都能见到它,比如豌豆荚
SearchView是android系统中内置的一个搜索框组件,可以很方便在添加在用户界面之上,但是也带来了一些问题,那就是searchview的UI是固定的,定制起来会很麻烦,如果对SearchView的要求比较高,完全可以采用button和...
FloatingSearchView Yet another floating search view implementation, also known as persistent search: that implementation fully supports menu (including submenu), logo and animated icon....
searchView的简单实现.,相关博文:http://www.cnblogs.com/tianzhijiexian/p/4224732.html