GithubHelp home page GithubHelp logo

search_layout's Introduction

SearchLayout

  • 作者:Carson_Ho
  • 概述

示意图

注:关于该开源项目的意见 & 建议可在Issue上提出。欢迎 Star !

1. 简介

一款封装了 历史搜索记录功能 & 样式Android自定义搜索框

已在Github开源:地址:SearchLayout,欢迎 Star

示意图

2. 功能介绍

2.1 需求场景

示意图

2.2 功能需求

  • 功能列表

示意图

  • 功能原型

示意图

2.3 功能示意

示意图

3. 特点

3.1 功能实用

  • 该搜索框开源库具备除了历史搜索记录功能外,还具备一般的搜索框功能(如一键清空搜索框内容等等)
  • 封装了 常见的搜索框样式(如左侧图标、返回按键等等),使用起来更加方便

3.2 使用简单

仅需要简单的xml属性配置

下面1节会详细介绍其使用方法

3.3 二次开发成本低

所以,在其上做二次开发 & 定制化成本非常低。

4. 具体使用

该款SearchLayout使用非常简单,仅需2步:

步骤1:导入控件库

主要有 Gradle & Maven 2种方式:

  • 方式1:Gradle引入依赖 build.Gradle
dependencies {
    compile 'com.carson_ho:SearchLayout:1.0.1'
}
  • 方式2:Maven引入依赖 pom.xml
<dependency>
  <groupId>com.carson_ho</groupId>
  <artifactId>SearchLayout</artifactId>
  <version>1.0.1</version>
  <type>pom</type>
</dependency>

步骤2:设置搜索框样式

  • 具体属性设置

示意图

  • 使用示例 在XML文件中进行设置 activity_main.xml
<scut.carson_ho.searchview.SearchView
        android:id="@+id/search_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:textSizeSearch="5dp"
        app:textColorSearch="#3F51B5"
        app:textHintSearch="输入查询关键字"
        app:searchBlockHeight="150"
        app:searchBlockColor="#ffffff"
        />

步骤3:设置点击键盘上的搜索按键 & 返回按键后的操作

MainActivity.java

// 1. 初始化搜索框变量
    private SearchView searchView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        // 2. 绑定视图
        setContentView(R.layout.activity_search);

        // 3. 绑定组件
        searchView = (SearchView) findViewById(R.id.search_view);

        // 4. 设置点击键盘上的搜索按键后的操作(通过回调接口)
        // 参数 = 搜索框输入的内容
        searchView.setOnClickSearch(new ICallBack() {
            @Override
            public void SearchAciton(String string) {
                System.out.println("我收到了" + string);
            }
        });
        
        // 5. 设置点击返回按键后的操作(通过回调接口)
        searchView.setOnClickBack(new bCallBack() {
            @Override
            public void BackAciton() {
                finish();
            }
        });
    }
}

5. 完整Demo地址

Carson_Ho的Github地址:SearchLayout

示意图

6. 源码解析

请看文章Android开源库:手把手教你实现一个简单好用的搜索框(含历史搜索记录)

7. 开源协议

SearchLayout 遵循 MIT 开源协议

8. 贡献代码

  • 具体请看:贡献代码说明
  • 关于该开源项目的意见 & 建议可在Issue上提出。欢迎 Star !

9. 版本说明

2017-08-11 v1.0.0 :基础功能上线(关键字搜索、历史搜索记录 & 一键删除功能)

关于作者

search_layout's People

Contributors

carson-ho avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

search_layout's Issues

SearchView中输入特殊符号如单引号(')时,SearchView会Crash

SearchView.java中方法insertData()执行数据库操作execSQL()时;以及queryData()中执行数据库操作rawQuery()时:SearchView会Crash。
我的解决办法是,使用二个参数的方法execSQL(String sql, Object[] bindArgs)和rawQuery(String sql, String[] selectionArgs),而不是单参数的。

命名不规范

用了你的控件,没细看源码,但是从核心的使用代码来看,命名不够规范
希望能规范一下,不要误导更多的人,可以参考阿里的java手册和android手册

       searchView.setOnClickSearch(new ICallBack() {
            @Override
            public void SearchAciton(String string) {//方法名小写开头
                System.out.println("我收到了" + string);
            }
        });
        searchView.setOnClickBack(new bCallBack() {//接口和类名大写开头
            @Override
            public void BackAciton() {//方法名小写开头
                finish();
            }
        });

两个点击事件里的Toast实属多余,对于直接引用这个库无法去除

/**
* 点击返回按键后的事件
*/
searchBack.setOnClickListener(new OnClickListener() {
@OverRide
public void onClick(View v) {
// 注:由于返回需求会根据自身情况不同而不同,所以具体逻辑由开发者自己实现,此处仅留出接口
if (!(bCallBack == null)){
bCallBack.BackAciton();
}

            //根据输入的内容模糊查询商品,并跳转到另一个界面,这个根据需求实现
            Toast.makeText(context, "返回到上一页", Toast.LENGTH_SHORT).show();
        }
    });

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.