1、添加依赖
// 侧滑菜单、TabLayout
implementation 'com.android.support:design:28.0.0'
//搜索框
implementation 'com.miguelcatalan:materialsearchview:1.4.0'
2、xml布局
搜索框在Toolbar上
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimaryDark"
app:titleTextColor="#FFFFFF">
</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、在res文件夹下创建menu文件夹
options_menu.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">
<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"/>
</menu>
4、在Activity中
1
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.options_menu, menu);
mSearchItem = menu.findItem(R.id.action_search);
// setVisible 设置选项菜单按钮显示或隐藏,true 显示,false 隐藏
mSearchItem.setVisible(false);
searchView.setMenuItem(mSearchItem);
return true;
}
2
searchView.setOnQueryTextListener(new MaterialSearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
//提交搜索内容时的监听
//Toast.makeText(MainActivity.this, "提交的内容:"+query, Toast.LENGTH_SHORT).show();
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
//文本发生改变的监听
//Toast.makeText(MainActivity.this, newText, Toast.LENGTH_SHORT).show();
return false;
}
});
searchView.setOnSearchViewListener(new MaterialSearchView.SearchViewListener() {
@Override
public void onSearchViewShown() {
//搜索框展开
Toast.makeText(MainActivity.this, "展开", Toast.LENGTH_SHORT).show();
}
@Override
public void onSearchViewClosed() {
//搜索框关闭
Toast.makeText(MainActivity.this, "关闭", Toast.LENGTH_SHORT).show();
}
});
//显示提示信息
//searchView.setSuggestions(getResources().getStringArray(R.array.query_suggestions));
提示信息
在values文件夹下的strings.xml文件里
<string-array name="query_suggestions">
<item>Android</item>
<item>iOS</item>
<item>SCALA</item>
<item>Ruby</item>
<item>JavaScript</item>
</string-array>
3、显示隐藏搜索框
//显示隐藏搜索框,其实就是显示隐藏选项菜单
mSearchItem.setVisible(true);
mSearchItem.setVisible(false);
4
/**
* 按回退键会调用这个方法
*/
@Override
public void onBackPressed() {
// 如果搜索框是展开的就关闭搜索框
if (searchView.isSearchOpen()) {
searchView.closeSearch();
}
}
网友评论