Android中MaterialSearchView(搜索框)的简单实用

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画一个搜索框,仅供参考.

你可能感兴趣的:(Android,Java)