- 原作者:Carson_Ho
- 修改者:LiYing(独毒火)
注:关于该开源项目的意见 & 建议可在 Issue 上提出。欢迎 Star !
一款封装了 历史搜索记录功能 & 样式 的 Android
自定义搜索框。
已在
Github
开源:地址:SearchLayout,欢迎Star
!
- 主要: 对某类事物进行精确搜索;
- 次要: 降低二次搜索的操作成本。
- 功能列表
需求场景 | 功能 | 描述 | 优先级 |
---|---|---|---|
(主要)对某类事物进行精确搜索 | 关键字搜索 | 根据用户的关键字输入进行数据库查找 | P1 |
(次要)降低二次搜索的操作成本 | 实时显示历史搜索记录 | 包括:最近搜索记录 & 相似搜索记录(根据用户输入) | P2 |
保存历史搜索记录 | 将用户的搜索字段进行保存(以点击搜索按钮为准) | P3 | |
删除历史搜索记录 | 将数据库中保存的历史搜索记录删除或清空 | P4 | |
一键删除输入搜索关键词 | 将用户当前输入的搜索关键词清空 | P5 |
- 功能原型
- 该搜索框开源库具备除了历史搜索记录功能外,还具备一般的搜索框功能(如一键清空搜索框内容等等)
- 封装了 常见的搜索框样式(如图标、字体、背景等等),使用起来更加方便
仅需要简单的 xml
属性配置
下面1节会详细介绍其使用方法
-
本项目已在
Github
上开源:地址:SearchLayout -
具备详细的源码分析文档:请看原作者 Carson_Ho 的文章 Android开源库:手把手教你实现一个简单好用的搜索框(含历史搜索记录)
主要有 Gradle
& Maven
2种方式:
- 方式1:
Gradle
引入依赖
build.gradle
dependencies {
implementation 'cc.duduhuo:search-view:1.1.6'
}
- 方式2:
Maven
引入依赖
pom.xml
<dependency>
<groupId>cc.duduhuo</groupId>
<artifactId>search-view</artifactId>
<version>1.1.6</version>
<type>pom</type>
</dependency>
- 自定义属性列表
属性 | 描述 | 类型 | 默认值 |
---|---|---|---|
searchTextSize | 搜索字体大小 | dimension | 14sp |
searchTextColor | 搜索字体颜色 | color | #9B9B9B |
searchTextHint | 搜索框编辑框提示内容 | string | 输入查询关键字 |
searchTextBackground | 搜索编辑框背景 | reference | 0 |
searchBlockColor | 搜索控件背景颜色 | color | #FFFFFF |
searchBlockBackground | 搜索控件背景 | reference | - |
searchBlockHeight | 搜索控件高度 | dimension | 46dp |
searchButtonBackground | 搜索按钮背景 | reference | 0 |
searchButtonIconColor | 搜索按钮图标颜色 | color | #878787 |
searchButtonVisible | 搜索按钮是否可见 | boolean | true |
iconColor | 所有图标的颜色 | color | #878787 |
backIconColor | 返回图标的颜色 | color | #878787 |
searchIconColor | 搜索图标的颜色 | color | #878787 |
deleteIconColor | 删除图标的颜色 | color | #878787 |
searchIconVisible | 搜索图标是否可见 | boolean | false |
clearHistoryText | 清除历史记录文字 | string | 清空搜索历史 |
clearHistoryTextColor | 清除历史记录文字颜色 | color | #606060 |
clearHistoryTextSize | 清除历史记录文字大小 | dimension | 14sp |
clearHistoryTextBackground | 清除历史记录文字背景 | reference | pressed: #ececec normal: #e2e2e2 |
- 使用示例
在 layout 文件中使用,如:
<scut.carson_ho.searchview.SearchView
android:id="@+id/search_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:clearHistoryText="清空搜索历史"/>
private SearchView searchView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
// 搜索框组件
searchView = findViewById(R.id.search_view);
// 是否在点击历史条目后启动搜索
searchView.startSearchWhenHistoryItemClick = true;
// 设置点击搜索按键后的操作(通过回调接口)
// 参数 = 搜索框输入的内容
searchView.setOnSearchListener(new OnSearchListener() {
@Override
public void onSearch(String keyword) {
Toast.makeText(SearchViewDemoActivity.this, "搜索关键词:" + keyword, Toast.LENGTH_SHORT).show();
// 也可通过 getSearchText() 方法获取搜索框中的内容
String searchText = searchView.getSearchText();
System.out.println(searchText);
// 如果需要自定义搜索按钮,可以在按钮的click事件中调用 startSearch() 方法。
// searchView.startSearch();
}
});
// 设置点击返回按键后的操作(通过回调接口)
searchView.setOnBackListener(new OnBackListener() {
@Override
public void onBack() {
finish();
}
});
}
SearchFragment searchFragment = SearchFragment.newInstance();
searchFragment.setOnSearchListener(new OnSearchListener() {
@Override
public void onSearch(String keyword) {
Toast.makeText(SearchFragmentDemoActivity.this, "搜索关键词:" + keyword, Toast.LENGTH_SHORT).show();
}
});
searchFragment.show(getSupportFragmentManager(), SearchFragment.TAG);
liying2008的Github地址:SearchLayout
- 具体请看:贡献代码说明
- 关于该开源项目的意见 & 建议可在
Issue
上提出。欢迎 Star & Fork !
- ID:Carson_Ho
- 简介:CSDN签约作者、简书推荐作者、稀土掘金专栏作者
- E - mail:carson.ho@foxmail.com
- Github:https://github.com/Carson-Ho
- CSDN:http://blog.csdn.net/carson_ho
- 简书:http://www.jianshu.com/u/383970bef0a0
- 稀土掘金:https://juejin.im/user/58d4d9781b69e6006ba65edc
- ID:liying2008
- E - mail:liruoer2008@yeah.net
- Github:https://github.com/liying2008
- CSDN:https://blog.csdn.net/u012939909
- 简书:https://www.jianshu.com/u/14ab91761183