Android中MaterialSearchView(搜索框)的简单实用
16lz
2021-01-26
Android中MaterialSearchView(搜索框)的简单实用
收搜框架有好多,动画效果满炫酷的就是代码太多,没发抽取他的搜索功能,而这个却比较好用些,直接从代码里面抠出来一个简单实现搜索功能一句话就是简单。
1.添加依赖
implementation’com.miguelcatalan:materialsearchview:1.4.0’
2.写布局
<FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" style="@style/AppTheme" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@color/colorPrimary" android:clipToPadding="true" android:fitsSystemWindows="true"> android.support.v7.widget.Toolbar> <com.miguelcatalan.materialsearchview.MaterialSearchView android:id="@+id/search_view" android:layout_width="match_parent" android:layout_height="wrap_content" /> FrameLayout>
3.menu:
<item android:id="@+id/action_search" android:icon="@drawable/ic_action_action_search" android:orderInCategory="100" android:title="@string/abc_search_hint" app:showAsAction="always" />
4.java代码:
//是否语言搜索 mSearchView.setVoiceSearch(false);// 设置光标可移动 mSearchView.setCursorDrawable(R.drawable.color_cursor_white); //设置收索提示// mSearchView.setSuggestions(getResources().getStringArray(R.array.query_suggestions));// 设置为查询文本侦听器 mSearchView.setOnQueryTextListener(new MaterialSearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { //这把外面用EventBus分别发送消息刷新 MEvent mEvent = new MEvent(); if (istow){ mEvent.tow=query; EventBus.getDefault().post(mEvent); } if (istree){ mEvent.tree=query; EventBus.getDefault().post(mEvent); } Snackbar.make(findViewById(R.id.container), "Query: " + query, Snackbar.LENGTH_LONG) .show(); return false ; } @Override public boolean onQueryTextChange(String newText) { return false; } }); //设置搜索视图监听器 mSearchView.setOnSearchViewListener(new MaterialSearchView.SearchViewListener() { @Override public void onSearchViewShown() { } @Override public void onSearchViewClosed() { } }); //设置提示列表点击事件 mSearchView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(MainActivity.this, "第" + position + "行", Toast.LENGTH_LONG).show(); } }); }//收索框那个图标 @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); MenuItem item = menu.findItem(R.id.action_search); item.setVisible(false); mSearchView.setMenuItem(item); mSearchMenuItem = item; return true; }
加一个回退,按Back键时取消收索
@Override public void onBackPressed() { if (mSearchView.isSearchOpen()) { mSearchView.closeSearch(); } else {// showExitDialog(); super.onBackPressed(); } }
差不多也就是这么多适合新手的简单收索框,如果您是大神可以自定义view画一个搜索框,仅供参考.
更多相关文章
- 手动从Eclipse移植Android项目到Android(安卓)Studio记录
- Android(安卓)华为手机音频设置播放倍速mMediaPlayer.getPlaybac
- android-编译
- WebView!!!!日记~~
- Android手机控制流量那几招
- Android(安卓)单元测试之UI测试
- 《android第一行代码,第二版》学习笔记(一)
- Android(安卓)Service详解(三) AIDL使用解析
- 《第一行代码Android》学习总结第二章 Activity创建与相关设置