搜索框

2019-04-27  本文已影响0人  沈溺_16e5
搜索框.gif

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();
    }
}
上一篇 下一篇

猜你喜欢

热点阅读