Android SearchView基本用法
1.设置searchView会在Toolbar中显示,或者在普通布局中显示:
(1).在普通布局当中:
/*** 设置searchView:*/setSearchAttribute(searchView);setSearchColor(searchView);//设置搜索栏的默认提示searchView.setQueryHint("Leslie");//默认刚进去就打开搜索栏searchView.setIconified(false);//点击事件:searchView.setOnSearchClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {startActivity(new Intent(getActivity(), SearchActivity.class));}});searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {@Overridepublic boolean onQueryTextSubmit(String query) {Toast.makeText(getContext(), "您输入的文本为" + query, Toast.LENGTH_SHORT).show();return true;}@Overridepublic boolean onQueryTextChange(String newText) {return false;}});
(2)在meau中设置:
/*** 设置menu:*/@Overridepublic boolean onCreateOptionsMenu(Menu menu) {//找到searchView:getMenuInflater().inflate(R.menu.search_menu, menu);MenuItem item=menu.findItem(R.id.searchs);SearchView searchView= (SearchView) MenuItemCompat.getActionView(item);setSearchAttribute(searchView);setSearchColor(searchView);//点击事件:searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {@Overridepublic boolean onQueryTextSubmit(String query) {Toast.makeText(SearchActivity.this, "您输入的文本为" + query, Toast.LENGTH_SHORT).show();searchs=query;ShareMusicUtils.SONG_NAME=SplicingSearchs();//请求搜索对象有关内容:Retrofit retrofit = new Retrofit.Builder().baseUrl("http://169.254.206.92:3000/search/").addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJava2CallAdapterFactory.create()).build();SearchApi searchApi = retrofit.create(SearchApi.class);Observable<SearchBean> myStar = searchApi.getSearchData(ShareMusicUtils.SONG_NAME).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread());Toast.makeText(SearchActivity.this, "asdasdasdsadasdasdsada", Toast.LENGTH_SHORT).show();myStar.subscribe(new Observer<SearchBean>() {@Overridepublic void onSubscribe(Disposable d) {}@Overridepublic void onNext(SearchBean searchBean) {Toast.makeText(SearchActivity.this, searchBean.toString(), Toast.LENGTH_SHORT).show();Log.i("222222222222222", searchBean.toString());List<SearchBean.ResultBean.SongsBean> songs = searchBean.getResult().getSongs();articleLists.addAll(songs);List<SearchBean.ResultBean.MvsBean> mvs = searchBean.getResult().getMvs();classLists.addAll(mvs);List<SearchBean.ResultBean.PlaylistsBean> playlists = searchBean.getResult().getPlaylists();musicLists.addAll(playlists);Log.i("1111111111111", songs.toString());}@Overridepublic void onError(Throwable e) {}@Overridepublic void onComplete() {}});
// Intent intent=new Intent(SearchActivity.this, SearchResultActivity.class);
// intent.putExtra("broad", (Serializable) articleLists);
// intent.putExtra("classes", (Serializable) classLists);
// intent.putExtra("article", (Serializable) musicLists);
// startActivity(intent);return true;}@Overridepublic boolean onQueryTextChange(String newText) {return false;}});return super.onCreateOptionsMenu(menu);}
2.下面是searchView的设置方法:
(1)设置SearchView属性:
/*** 设置Searchview属性:*/private SearchView setSearchAttribute(SearchView searchView) {//默认刚进去就打开搜索栏:searchView.setIconified(false);//敲掉消除按键,下划线:searchView.findViewById(android.support.v7.appcompat.R.id.search_plate).setBackground(null);searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn).setBackground(null);//设置字体颜色、大小、背景:android.support.v7.widget.SearchView.SearchAutoComplete textView = searchView.findViewById(R.id.search_src_text);textView.setTextColor(getResources().getColor(R.color.text_color_hint));textView.setHintTextColor(getResources().getColor(R.color.text_color_hint));textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15);textView.setBackgroundResource(R.drawable.search_box);//自定义button背景:ImageView closeViewIcon = (ImageView) searchView.findViewById(R.id.search_close_btn);closeViewIcon.setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.pinlun_send));//设置搜索图标在编辑框外,ture时在框内searchView.setIconifiedByDefault(true);return searchView;}
(2).设置光标:
/*** 设置searchView光标:*/private SearchView setSearchColor(SearchView searchView) {final EditText editText = (EditText) searchView.findViewById(R.id.search_src_text);try {Field fCursorDrawableRes = TextView.class.getDeclaredField("mCursorDrawableRes");fCursorDrawableRes.setAccessible(true);int mCursorDrawableRes = fCursorDrawableRes.getInt(editText);Field fEditor = TextView.class.getDeclaredField("mEditor");fEditor.setAccessible(true);Object editor = fEditor.get(editText);Class<?> clazz = editor.getClass();Field fCursorDrawable =clazz.getDeclaredField("mCursorDrawable");fCursorDrawable.setAccessible(true);if (mCursorDrawableRes <= 0) {return searchView;}Drawable cursorDrawable =ContextCompat.getDrawable(searchView.getContext(), mCursorDrawableRes);if (cursorDrawable == null) {return searchView;}Drawable tintDrawable = DrawableCompat.wrap(cursorDrawable);DrawableCompat.setTintList(tintDrawable,//自定义的颜色ColorStateList.valueOf(ContextCompat.getColor(getContext(), R.color.text_color_normal)));Drawable[] drawables= new Drawable[]{tintDrawable, tintDrawable};fCursorDrawable.set(editor, drawables);} catch (Throwable ignored) {}return searchView;}
Android SearchView基本用法相关推荐
- android默认exported_Android android:exported = true 用法详解
Android android:exported = true 用法详解 Android相关属性的介绍:android:exported = true 在Activity中该属性用来标示:当前Acti ...
- Android之Adapter用法总结
本文转自http://kb.cnblogs.com/a/2328334/,转载请注明原出处. Android之Adapter用法总结 作者:Devin Zhang 来源:博客园 发布时间:2012 ...
- Android的Adapter用法总结
Android之Adapter用法总结 1.Adapter概念 定义为将一个类的接口变换成客户端所期待的一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作. 在androi ...
- Android webservice的用法详细讲解
Android webservice的用法详细讲解 看到有很多朋友对WebService还不是很了解,在此就详细的讲讲WebService,争取说得明白吧.此文章采用的项目是我毕业设计的webserv ...
- 使用DataBinding的Android SearchView示例教程
Today we will look into Android SearchView widget and develop an application that filters a ListView ...
- android room表关联,Android Room的用法
Android Room的用法 SQLite是Android内置的轻量级关系型数据库,但直接使用SQLite core包做数据库操作有以下劣势:需要编写长且重复的代码,这会很耗时且容易出错. 管理SQ ...
- android图片显示组件,Android可循环显示图像的Android Gallery组件用法实例
本文实例分析了Android可循环显示图像的Android Gallery组件用法.分享给大家供大家参考,具体如下: Gallery组件主要用于横向显示图像列表,不过按常规做法.Gallery组件只能 ...
- Android RxJava 基本用法
Android RxJava 基本用法 RxJava 使用函数响应式编程方式,它可以简化项目,处理嵌套回调的异步事件. RxJava 依赖 这里以 RxJava 2.2.1 为例.在 build.gr ...
- Android中富文本用法包括点击事件处理
Android中富文本用法包括点击事件处理 关于 只需要富文本展示效果,不需要点击事件 展示富文本加点击事件 关于 最近项目需要中需要用到富文本展示及富文本点击功能,先去百度了一下,大多数的说法是 ...
最新文章
- Maven环境搭建及常用命令、生命周期
- SegWit与BCH交易量及投资者流量更新
- 2021年春季学期-信号与系统-第一次作业参考答案-第三题
- MVC4 学习笔记01
- Docker框架的使用系列教程(四)容器的使用
- dockerfile cd目录_使用Werf和现有的Dockerfiles改善你的CI/CD体验
- android 的 sp 智能指针用法介绍 sp wp
- c# 关于DataTable
- gitlab更新配置无效_Gitlab 快速的搭建
- eclipse创建第一个JSP项目
- python给excel排序_python初学—-实现excel里面读数据进行排序
- 器件选型--电源电容滤波
- 3DES加密解密方法
- 【Excel】数据的排序、筛选和分类汇总
- 智能跟随小车-红外遥控(程序+原理图+PCB+论文报告)
- C语言条件运算符详解
- HDS 高端存储TC原理和配置总结
- 二叉树【按层打印、序列化、反序列化】
- 推荐两款好用的企业级内网穿透软件
- java对pdf文件进行加密操作