SearchView(搜索框)与Menu(菜单)配合使用

2023-11-08 01:01

本文主要是介绍SearchView(搜索框)与Menu(菜单)配合使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在Android应用中SearchView常与Menu配合使用,以在应用的操作栏(通常是应用栏或工具栏)中提供搜索功能。

步骤:

1. 定义菜单项 

res \ menu \ xxx.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"><itemandroid:id="@+id/searchItem"app:showAsAction="always"  //显示位置app:actionViewClass="androidx.appcompat.widget.SearchView"  //视图类 ... ... />... ...</menu>

2. ToolBar替换ActionBar

可不替换

(1) 创建style并为Theme赋值
<resources><style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar"/>
</resources>

清单文件中 android:theme="MyTheme" 

(2) 在XML文件中添加ToolBar控件
<androidx.appcompat.widget.Toolbarandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/toolBar"app:menu="@menu/ xxx "/>
(3) 将ToolBar设置为操作栏
Toolbar toolbar=findViewById(R.id.toolBar);
setSupportActionBar(toolbar);

3. 在创建菜单时设置搜索视图SearchView

(1) 使菜单生效
public class MainActivity extends AppCompatActivity {protected void onCreate(Bundle savedInstanceState) {... ...}public boolean onCreateOptionsMenu(Menu menu) {//创建菜单时调用//填充菜单getMenuInflater().inflate(R.menu.overflowmenu,menu);return true;}public boolean onOptionsItemSelected(MenuItem item) {//点击菜单项调用return true;}public boolean onMenuOpened(int featureId, Menu menu) {//打开菜单时调用//可在此添加自定义方法,使列表项显示icon图标return super.onMenuOpened(featureId, menu);}
}
(2) 在创建菜单时设置SearchView搜索框
public boolean onCreateOptionsMenu(Menu menu) {//创建菜单时调用//创建菜单栏//填充菜单getMenuInflater().inflate(R.menu.overflowmenu,menu);//获取指定菜单项MenuItem menuItem=menu.findItem(R.id.searchItem);//获取搜索框SearchView searchView= (SearchView) menuItem.getActionView();//设置默认为图标化searchView.setIconifiedByDefault(true);//设置提示字符串searchView.setQueryHint("请输入关键字");//设置提交按钮有效searchView.setSubmitButtonEnabled(true);//设置键盘信息-回车键变搜索键searchView.setImeOptions(EditorInfo.IME_ACTION_SEARCH);//设置查询文本监听器-输入文本时出现建议searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {public boolean onQueryTextSubmit(String query) {//查询提交时调用return true;}public boolean onQueryTextChange(String newText) {//查询文本变化时调用//String newText = searchView.getQuery().toString();//获取Cursor(通过搜索框内容newText模糊查询的结果)Cursor cursor= ~ ;//设置建议适配器CursorAdapter suggestionAdapter = new SimpleCursorAdapter(MainActivity.this,  //环境android.R.layout.simple_list_item_1, // 使用默认的建议项布局cursor, // 这里传入Cursor数据源(存储了N个建议String)new String[] { QueryUtil.column_name }, // 数据源中的建议文本列new int[] { android.R.id.text1 }, // 建议项视图中的文本视图ID0);searchView.setSuggestionsAdapter(suggestionAdapter);return true;}});//设置建议监听器-点击建议自动补全searchView.setOnSuggestionListener(new SearchView.OnSuggestionListener() {public boolean onSuggestionSelect(int position) {//建议选中时调用return true;}@SuppressLint("Range")public boolean onSuggestionClick(int position) {//建议点击时调用CursorAdapter suggestionAdapter=searchView.getSuggestionsAdapter();Cursor cursor = suggestionAdapter.getCursor();if (cursor != null) {cursor.moveToPosition(position);//移动到指定positionString suggestion = cursor.getString(cursor.getColumnIndex(QueryUtil.column_name));// 获取建议文本列的索引的String值searchView.setQuery(suggestion, true); // 自动填充SearchView}return true;}});return true;
}

 4. SearchView常用方法

setIconifiedByDefault(boolean iconify 设置 SearchView 是否默认时处于图标化状态。

setIconified(boolean iconify 设置 SearchView 是否处于图标化状态(收缩状态)。如果设置为 true,则 SearchView 将显示为一个图标,而不是一个扩展的搜索框。

isIconified()  检查 SearchView 是否处于图标化状态。

setQueryHint(String hint 设置搜索框中的提示文本。

setSubmitButtonEnabled(boolean enabled)  启用或禁用搜索框中的提交按钮。启用后,用户可以点击提交按钮执行搜索操作。

setImeOptions( EditorInfo.IME_ACTION_SEARCH )  设置键盘信息(回车键变搜索键)。

setOnQueryTextListener(OnQueryTextListener listener 设置一个查询文本监听器,可以通过该监听器捕获文本变化(onQueryTextChange)及提交查询操作(onQueryTextSubmit)事件。实现其中的onQueryTextChange方法,在文本变化时为搜索框设置建议适配器(setSuggestionsAdapter);使其在文本变化时显示建议(列表)。

setSuggestionsAdapter(CursorAdapter adapter 设置搜索建议的适配器,用于提供搜索建议(列表)。

setOnSuggestionListener(OnSuggestionListener listener)  设置建议监听器,可以通过该监听器捕获建议选中(onSuggestionSelect)及建议点击(onSuggestionClick)事件。实现其中的onSuggestionClick方法,在点击建议时为搜索框设置搜索内容及是否提交(setQuery);使其在点击建议时自动补全并提交查询。

setQuery(CharSequence query, boolean submit 设置查询内容,放入搜索框中;第一个参数为查询文本,第二个参数为是否自动提交搜索。

getQuery()  获取当前搜索框中的查询文本。

setFocusable(boolean focusable 设置 SearchView 是否可以获得焦点。

setOnQueryTextFocusChangeListener(View.OnFocusChangeListener listener)  设置焦点变化监听器,以便在焦点状态变化时进行相应操作。

setOnCloseListener(OnCloseListener listener)  设置一个关闭事件的监听器,当用户关闭 SearchView 时触发。

这篇关于SearchView(搜索框)与Menu(菜单)配合使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/367053

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

hdu1240、hdu1253(三维搜索题)

1、从后往前输入,(x,y,z); 2、从下往上输入,(y , z, x); 3、从左往右输入,(z,x,y); hdu1240代码如下: #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#inc

禁止平板,iPad长按弹出默认菜单事件

通过监控按下抬起时间差来禁止弹出事件,把以下代码写在要禁止的页面的页面加载事件里面即可     var date;document.addEventListener('touchstart', event => {date = new Date().getTime();});document.addEventListener('touchend', event => {if (new

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]