Android自定义View之FairySearchView(灵活的通用搜索控件)

1.概述

FairySearchView是经过封装的通用搜索控件,可以根据需求切换不同的布局模式。内置多种事件监听器,可以满足不同场景的业务需求,使用方式非常灵活。

2.效果预览

显示所有控件(无输入内容)显示所有控件(有输入内容)
点击了回车/搜索不显示返回按钮
不显示取消按钮不显示返回/取消按钮

3.基本用法

Gradle配置

//根项目下的build.gradle
allprojects {
    repositories {
        maven { url "https://jitpack.io" }
    }
}

//主项目下的build.gradle
dependencies {
    implementation 'com.github.CodingEnding:FairySearchView:1.01'
}

基本使用

搜索栏一般嵌套在Toolbar中使用,如下:

<!-- 将FairySearView嵌套在Toolbar中使用(也可以单独使用) -->
<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    app:contentInsetStart="0dp">

    <com.codingending.library.FairySearchView
        android:id="@+id/search_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:searchViewHeight="55dp"
        app:showSearchIcon="true"
        app:showBackButton="true"
        app:showClearButton="true"
        app:showCancelButton="true" />

</android.support.v7.widget.Toolbar>

提示: Toolbar默认有16dp的左边距,这会影响UI效果,可以通过设置app:contentInsetStart="0dp"取消这个边距。

当然,FairySearchView也可以作为一个普通控件使用。注意,FairySearchView默认并没有设置背景,如果将其作为普通控件请设置android:background属性。

相关属性

属性名类型默认值说明
app:searchViewHeightdimension52dp中间输入区域的高度
app:maxSearchLengthintegerx输入框的最大文字长度
app:showBackButtonbooleanfalse是否显示左侧返回按钮
app:backIcondrawablex左侧返回按钮的图标
app:showSearchIconbooleantrue是否显示输入框左侧的搜索按钮
app:backIcondrawablex输入框左侧的搜索按钮图标
app:showClearButtonbooleantrue是否显示输入框右侧的清除按钮
app:clearIcondrawablex输入框右侧的清除按钮图标
app:showCancelButtonbooleantrue是否显示右侧的取消按钮
app:cancelTextstring取消右侧取消按钮显示的文字
app:cancelTextSizedimension16sp右侧取消按钮的文字大小
app:cancelTextColorcolorfff右侧取消按钮的文字颜色
app:searchTextstringx输入框的内容
app:searchTextSizedimension14sp输入框的的文字大小
app:searchTextColorcolor212121输入框的的文字颜色
app:searchHintstringx输入框的提示文字
app:searchHintColorcoloraaa输入框的的提示文字颜色

监听器

FairySearchView内置了多个事件监听器,可以根据实际需求灵活设置。

监听左侧返回按钮的点击事件:

fairySearchView.setOnBackClickListener(new FairySearchView.OnBackClickListener() {
    @Override
    public void onClick() {
        //TODO
    }
});

监听清除按钮的点击事件:

fairySearchView.setOnClearClickListener(new FairySearchView.OnClearClickListener() {
    @Override
    public void onClick(String oldContent) {
        //oldContent:被清除的内容
    }
});

说明: 默认情况下点击清除按钮会清空输入框中的内容,如果没有特殊的需求请不要设置这个监听器。

监听右侧取消按钮的点击事件:

fairySearchView.setOnCancelClickListener(new FairySearchView.OnCancelClickListener() {
    @Override
    public void onClick() {
        //TODO
    }
});

监听输入框内容的变化:

fairySearchView.setOnEditChangeListener(new FairySearchView.OnEditChangeListener() {
    @Override
    public void onEditChanged(String nowContent) {
        //nowContent:输入框中的内容
    }
});

监听虚拟键盘的右下角回车/搜索按键点击事件(此时可以执行搜索):

fairySearchView.setOnEnterClickListener(new FairySearchView.OnEnterClickListener() {
    @Override
    public void onEnterClick(String content) {
        //content:输入框中的内容
    }
});

相关方法

FairySearchView为大部分属性提供了对应的getter/setter方法,下面列出其中的一部分,其他的方法也基本类似。

方法名返回值说明
setSearchText(String text)void设置输入内容
getSearchTextstring获得输入内容
setSearchTextSize(int searchTextSize)void设置输入文字大小(px)
setSearchTextColor(int searchTextColor)void设置输入文字颜色
setSearchHint(String searchHint)void设置提示文字
setSearchHintColor(int searchHintColor)void设置提示文字颜色
setSearchViewHeight(int searchViewHeight)void设置输入区域高度(px)
setMaxSearchLength(int maxSearchLength)void限制输入内容的最大长度
setBackIcon(int backIcon)void设置返回按钮的图标
setShowBackButton(boolean showBackButton)void设置是否显示返回按钮
……………….……….

4.实现思路

本库的实现方式还是挺简单的,主要参考了多种常用的搜索框UI风格,并进行了适当封装。允许使用者根据需求切换不同的布局模式,并向外暴露需要的监听器接口。

更多的细节可以参考Github上的代码。

5.Github地址

https://github.com/CodingEnding/FairySearchView

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值