安卓UI:SearchView

目录

一、SearchView介绍

二、常用方法

(一)、监听器:

 (二)、常用方法:

(三)、其他常用方法

三、例子:

MainActivity2 :

ChatListAdapter :

 item_people_view:

 activity_main2:

运行结果:

一、SearchView介绍

        SearchView 是 Android 平台上常用的搜索框控件,它提供了一个可定制的用户界面,允许用户输入搜索查询并触发相关操作。SearchView 可以方便地集成到应用程序中,提供了各种功能和样式选项,使用户能够快速、准确地进行搜索。

SearchView属性

属性名称    相关方法  功能
android:iconifiedByDefault   setIconifiedByDefault(boolean)设置搜索图标是否显示在搜索框内
android:imeOptions  setImeOptions(int)  设置输入法搜索选项字段,默认是搜索,可以是:下一页、发送、完成等
android:inputType   setInputType(int) 设置输入类型
 android:maxWidth setMaxWidth(int) 设置最大宽度
android:queryHintsetQueryHint(CharSequence)   设置查询提示字符串

二、常用方法

(一)、监听器:

  • setOnQueryTextListener(OnQueryTextListener listener): 设置文本查询监听器。可以通过该监听器获取搜索关键字的输入、提交和清除操作等
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {@Overridepublic boolean onQueryTextSubmit(String query) {// 当用户提交搜索关键字时触发// 在这里处理搜索逻辑return true;}@Overridepublic boolean onQueryTextChange(String newText) {// 当搜索关键字发生变化时触发// 在这里实现实时搜索功能return true;}
});
  • setOnSearchClickListener(View.OnClickListener listener): 设置搜索图标点击监听器。可以在搜索图标被点击时执行一些操作。
searchView.setOnSearchClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 当搜索图标被点击时触发// 在这里执行操作,例如展示搜索历史记录等}
});

 (二)、常用方法:

  • setQueryHint(CharSequence hint): 设置搜索框的提示文本,以指导用户输入搜索关键字。
searchView.setQueryHint("请输入搜索关键字");
  • getQuery(): 获取当前搜索框中的关键字。
String query = searchView.getQuery().toString();
  • setQuery(CharSequence query, boolean submit): 设置搜索框中的关键字。
searchView.setQuery("关键字", false);
  • setIconified(boolean iconify): 控制搜索框的展开和收起状态。true 表示收起搜索框,只显示搜索图标;false 表示展开搜索框。
searchView.setIconified(false); // 展开搜索框

(三)、其他常用方法

  • clearFocus(): 清除搜索框的焦点。
  • isIconified(): 判断搜索框是否处于收起状态。
  • setSubmitButtonEnabled(boolean enabled): 设置是否显示提交按钮,用于一键提交搜索关键字。
  • setSuggestionsAdapter(CursorAdapter adapter): 设置搜索建议的适配器。可以自定义搜索建议的展示样式和数据源。

三、例子:

MainActivity2 :

package com.example.qq.Activity;import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;import android.os.Bundle;import com.example.qq.Fragment.ChatFragment;
import com.example.qq.R;public class MainActivity2 extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);ChatFragment chatFragment = new ChatFragment();addFragment(chatFragment);}// 静态添加 Fragmentprivate void addFragment(Fragment fragment) {getSupportFragmentManager().beginTransaction().add(R.id.ff, fragment).commit();}
}

ChatListAdapter :

package com.example.qq.Adapter;import android.content.Intent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;import com.example.qq.Adapter.DataBean.Person;
import com.example.qq.R;
import com.example.qq.Activity.CommunicateActivity;import java.util.List;public class ChatListAdapter extends RecyclerView.Adapter<ChatListAdapter.ViewHolder> {private List<Person> mList;public ChatListAdapter(List<Person>data){this.mList = data;}@NonNull@Overridepublic ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {View view = View.inflate(parent.getContext(), R.layout.item_people_view,null);ViewHolder holder = new ViewHolder(view);holder.name.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(parent.getContext(), CommunicateActivity.class);parent.getContext().startActivity(intent);}});return holder;}@Overridepublic void onBindViewHolder(@NonNull ViewHolder holder, int position) {Person people = mList.get(position);holder.name.setText(people.name);holder.photo.setImageResource(people.pic);}@Overridepublic int getItemCount() {return mList.size();}public void setPersonList(List<Person> filteredList) {this.mList = filteredList;}public class ViewHolder extends RecyclerView.ViewHolder {private final ImageView photo;private final TextView name;public ViewHolder(@NonNull View itemView) {super(itemView);photo = itemView.findViewById(R.id.photo);name = itemView.findViewById(R.id.name);}}
}

 item_people_view:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:ignore="SpeakableTextPresentCheck"><SearchViewandroid:id="@+id/search_view"android:layout_width="match_parent"android:layout_height="40sp"/><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/chat_list"android:layout_width="match_parent"android:layout_height="626dp" /></LinearLayout>

 activity_main2:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".Activity.MainActivity2">
<FrameLayoutandroid:id="@+id/ff"android:layout_width="match_parent"android:layout_height="match_parent"/>
</LinearLayout>

运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/22778.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实例014 OutLook界面

实例说明 程序主界面包括菜单栏、工具栏、状态栏和树状视图。OutLook界面美观、友好&#xff0c;是一个很实用的程序主界面&#xff0c;并且菜单栏和工具栏是可移动的。运行本例效果如图1.14所示。 图1.14 Out Look界面 技术要点 一般程序的菜单栏和工具栏是不可移动的&…

继承【C++】

继承 继承解决了什么问题&#xff1f;继承的应用场景是什么&#xff1f;简单举例继承的关系语法 继承解决了什么问题&#xff1f; C代码的 可重用性 通过继承实现。 新类从已有类获得已有的特性。 继承的应用场景是什么&#xff1f; 继承是一种设计的结果。&#xff08;举例…

HTML 第二部分 (前端学习)

由于&#xff0c;HTML的部分实在是太多了&#xff0c;第一部分&#xff0c;还没学一半&#xff0c;就已经抄了1w字。而且可能&#xff0c;真正用上的也比较少&#xff0c;更何况&#xff0c;一直坚持&#xff0c;一个不落的学下去&#xff0c;也存在一点注意力分散的困难&#…

暑假第九天打卡

英语&#xff1a; 新东方六级一单元单词刷题复习 离散&#xff1a; 例12 使用消解算法判断下述公式是否是可满足的: 公式 S p∧(p∨q)∧(p∨q)∧(q∨r)∧(q∨r) 解&#xff1a; S p∧(p∨q)∧(p∨q)∧(q∨r)∧(q∨r) //化为主合取式 循环1&#xff1a; S0 S1 {p…

vue前端下载打开文件

<a href"/static/template/公告导入人员模板.xlsx" id"downloadTemplate" style"">下载模版</a>vue前端下载打开文件

低代码平台之流程自动化测试

随着低代码平台的快速发展&#xff0c;开发人员可以便捷、快速地开发流程应用程序&#xff0c;由于业务流程的复杂化和业务需求的不断变化&#xff0c;对业务流程进行优化和改进将更加频繁&#xff0c;在这个过程中&#xff0c;就要求企业的流程测试的效率和质量需要跟上低代码…

svn迁移到git实际操作

1.到svn项目目录右键选中gitbash打开窗口&#xff0c;执行获取用户并映射成git样式账号命令如下: svn log -q | awk -F | /^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" "$2" <"$2"163.cn>…

Python深度强化学习实战 ——OpenAI Gym-CarRacing自动驾驶项目

&#x1f4ad; 写在前面&#xff1a;本篇是关于 OpenAI Gym-CarRacing 自动驾驶项目的博客&#xff0c;面向掌握 Python 并有一定的深度强化学习基础的读者。GYM-Box2D CarRacing 是一种在 OpenAI Gym 平台上开发和比较强化学习算法的模拟环境。它是流行的 Box2D 物理引擎的一个…

HTML <map> 标签

实例 带有可点击区域的图像映射: <img src="planets.jpg" border="0" usemap="#planetmap" alt="Planets" /><map name="planetmap" id="planetmap"><area shape="circle" coords=&q…

领域知识图谱的医生推荐系统:利用BERT+CRF+BiLSTM的医疗实体识别,建立医学知识图谱,建立知识问答系统

项目设计集合&#xff08;人工智能方向&#xff09;&#xff1a;助力新人快速实战掌握技能、自主完成项目设计升级&#xff0c;提升自身的硬实力&#xff08;不仅限NLP、知识图谱、计算机视觉等领域&#xff09;&#xff1a;汇总有意义的项目设计集合&#xff0c;助力新人快速实…

HTML+CSS+JavaScript:九九乘法表

一、需求如图 二、思路及代码 1、JavaScript代码 稍微刷过一点算法题的小伙伴就很容易想到这题需要利用双层for循环来实现&#xff0c;思路也是比较简单的&#xff0c;我在这里就直接放代码了 不添加CSS渲染的代码如下 <!DOCTYPE html> <html lang"en"&…

HTTP、HTTPS协议详解

文章目录 HTTP是什么报文结构请求头部响应头部 工作原理用户点击一个URL链接后&#xff0c;浏览器和web服务器会执行什么http的版本持久连接和非持久连接无状态与有状态Cookie和Sessionhttp方法&#xff1a;get和post的区别 状态码 HTTPS是什么ssl如何搞到证书nginx中的部署 加…