SearchView.OnCloseListener() 不起作用解决办法。

来源:互联网 发布:mac 查看剩余空间 编辑:程序博客网 时间:2024/06/03 17:00

今天遇到了一个问题,SearchView的关闭事件SearchView.OnCloseListener()死活不起作用,各种百度啊。。。结果百度到一篇,说SearchView.OnCloseListener()只能在安卓3.2以下才有效,晕死,然后照着这篇文章里面的方式改了一下,结果menuItem.setOnActionExpandListener那里又报错有木有。哎,然后又接着百度,

算了,直接贴代码。

这是我一整段创建OptionsMenu和SearchView的代码,包含了关闭和搜索。

@Override    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {        // TODO Auto-generated method stub        super.onCreateOptionsMenu(menu, inflater);        inflater.inflate(R.menu.menu, menu);        //Select search item        final MenuItem menuItem = menu.findItem(R.id.menu_search);        menuItem.setVisible(true);        SearchView searchView = (SearchView) menuItem.getActionView();        searchView.setQueryHint(this.getString(R.string.search));//设置搜索框的hint        ((EditText) searchView.findViewById(R.id.search_src_text))                .setHintTextColor(getResources().getColor(R.color.nliveo_white));//设置搜索框的字体颜色?        searchView.setOnQueryTextListener(onQuerySearchView);//设置搜索事件监听        //监控当searchView关闭时调用事件//需要对系统版本做判断        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {            MenuItemCompat.setOnActionExpandListener(menuItem,                    new MenuItemCompat.OnActionExpandListener() {                        @Override                        public boolean onMenuItemActionExpand(MenuItem menuItem) {                            return true;                        }                        @Override                        public boolean onMenuItemActionCollapse(MenuItem menuItem) {                           //添加searchView关闭事件                            return true;                        }                    });        } else {            searchView.setOnCloseListener(new SearchView.OnCloseListener() {                @Override                public boolean onClose() {                    //添加searchView关闭事件                    return false;                }            });        }        mSearchCheck = false;    }private SearchView.OnQueryTextListener onQuerySearchView = new SearchView.OnQueryTextListener() {        @Override        public boolean onQueryTextSubmit(String s) {            //点击键盘的搜索之后才进行搜索            return false;        }        @Override        public boolean onQueryTextChange(String s) {            if (mSearchCheck) {                //输入的同时会进行搜索            }            return false;        }    };


1 0
原创粉丝点击