Android Material Design 系列之 SearchView + Toolbar 开发详解

本文详述了Android中SearchView与Toolbar的集成使用,包括SearchView的基础属性、加载到Toolbar的方法、样式修改及监听事件的设置。实战部分讲解了如何监听返回键关闭搜索框、去除默认下划线、自定义背景样式以及实现搜索自动提示功能。通过实例,帮助开发者深入理解SearchView的高级用法。
摘要由CSDN通过智能技术生成

前言

SearchView 是 Android 原生的搜索框控件,它提供了一个用户界面,可以让用户在文本框内输入文字,并允许通过看监听器监控用户输入,当用户输入完成后提交搜索时,也可通过监听器执行实际的搜索。

一、常见属性

相关方法 解释说明
setIconifiedByDefault(boolean) 设置该搜索框默认是否自动缩小为图标
setImeOptions(int) 设置输入法搜索选项字段,默认是搜索,可以是:下一页、发送、完成等
setInputType(int) 设置输入类型
setMaxWidth(int) 设置最大宽度
setQueryHint(CharSequence) 设置查询提示字符串
setThreshold(int threshold) 设置触发查询的最少字符数(默认 2 个字符才会触发查询)
setIconified(boolean iconify) 置搜索框直接展开显示。左侧有放大镜(在搜索框中) 右侧有叉叉,可以关闭搜索框
setIconifiedByDefault(boolean iconified) 设置搜索框直接展开显示。左侧有放大镜(在搜索框外) 右侧无叉叉 有输入内容后有叉叉,不能关闭搜索框
mSearchView.onActionViewExpanded() 设置搜索框直接展开显示。左侧有无放大镜(在搜索框中) 右侧无叉叉 有输入内容后有叉叉,不能关闭搜索框
setSubmitButtonEnabled(boolean enabled) 设置提交按钮是否可见

使用 SearchView 时可使用如下常用方法。

  • setIconifiedByDefault(Boolean iconified):设置该搜索框默认是否自动缩小为图标。

  • setSubmitButtonEnabled(Boolean enabled):设置是否显示搜索按钮。

  • setQueryHint(CharSequence hint):设置搜索框内默认显示的提示文本。

  • setOnQueryTextListener(SearchView.OnQueryTextListener listener):为该搜索框设置事件监听器。

如果为 SearchView 增加一个配套的 ListView,则可以为 SearchView 增加自动完成功能。下面实例示范如何使用 SearchView。

二、基础使用

SearchView 常规使用结合 ToolBar,完成 APP 首页 Tab 栏的搜索功能,ToolBar 加载 Menu 形式来呈现 SearchView 效果。本文重点讲解 SearchView 使用,如果对 ToolBar 相关知识点属性不熟悉的,请参考阅读:

Android Material Design 系列之 Toolbar 使用详解

1、menu 新建 search.xml 文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".toolbar.SearchViewActivity">
    <item
        android:id="@+id/search"
        android:title="搜索"
        app:actionViewClass="android.widget.SearchView"
        app:showAsAction="always" />
    <item
        android:id="@+id/setting"
        android:title="设置"
        app:showAsAction="never" />
</menu>

相信学习过 ToolBar 的对上面 menu 文件配置很熟悉,这里需要重点注意app:actionViewClass="android.widget.SearchView"属性,这个属性是用来加载一个 View,传入 SearchView 的完整包名。

2、SearchView 加载 Toolbar

既然可以将 SearchView 加载到 Toolbar 中,那么自然可以获取到 SearchView 控件实例,然后就可以设置 SearchView 相关属性。重写 Activity 中 onCreateOptionsMenu(Menu menu) 方法完成 menu 加载,可以根据MenuItemCompat.getActionView方法获取 SearchView 实例。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
   
    getMenuInflater().inflate(R.menu.searchview_menu, menu);
    // 获取搜索Menu
    MenuItem item = menu.findItem(R.id.search);
    // 通过MenuItemCompat.getActionView()方法获取SearchView
    SearchView mSearchView = (SearchView) MenuItemCompat.getActionView(item);
}

注意:记得在 onCreate()方法里设置setSupportActionBar(toolbar);

3、SearchView 显示模式

//设置搜索框直接展开显示。左侧有放大镜(在搜索框中) 右侧有叉叉 可以关闭搜索框
mSearchView.setIconified(false);
//设置搜索框直接展开显示。左侧有放大镜(在搜索框外) 右侧无叉叉 有输入内容后有叉叉 不能关闭搜索框
mSearchView.setIconifiedByDefault(false);
//设置搜索框直接展开显示。左侧有无放大镜(在搜索框中) 右侧无叉叉 有输入内容后有叉叉 不能关闭搜索框
mSearchView.onActionViewExpanded();

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值