搜索框

作者: 沈溺_16e5 | 来源:发表于2019-04-27 16:17 被阅读0次
    搜索框.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();
        }
    }
    

    相关文章

      网友评论

          本文标题:搜索框

          本文链接:https://www.haomeiwen.com/subject/zbrknqtx.html