Auto Collapse ActionBar SearchView on Soft Keyboard close

后端 未结 11 1150
遥遥无期
遥遥无期 2020-12-07 20:30

I am currently using an ActionBar menu item to display a SearchView in the action bar. When the search menu item is expanded the soft keyboard is displayed which is what I

11条回答
  •  没有蜡笔的小新
    2020-12-07 20:47

    @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getSupportMenuInflater().inflate(R.menu.home_screen, menu);
    
            SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
            final MenuItem searchMenuItem = menu.findItem(R.id.menu_search);
            final SearchView searchView = (SearchView) searchMenuItem
                    .getActionView();
            searchView.setIconifiedByDefault(false);
            if (searchManager != null && searchView != null) {
                searchView.setSearchableInfo(searchManager
                        .getSearchableInfo(getComponentName()));
    
                searchView
                        .setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
    
                            @Override
                            public void onFocusChange(View v, boolean hasFocus) {
    
                                if (!hasFocus) {
                                    if (searchMenuItem != null) {
                                        searchMenuItem.collapseActionView();
                                    }// end if
                                    if (searchView != null) {
                                        searchView.setQuery("", false);
    
                                    }// end if
                                }// end if
    
                            }
                        });
    
                searchView
                        .setOnQueryTextListener(new SearchView.OnQueryTextListener() {
    
                            @Override
                            public boolean onQueryTextSubmit(String query) {
                                /**
                                 * hides and then unhides search tab to make sure
                                 * keyboard disappears when query is submitted
                                 */
                                if (searchView != null) {
                                    searchView.setVisibility(View.INVISIBLE);
                                    searchView.setVisibility(View.VISIBLE);
    
                                }
                                return false;
                            }
    
                            @Override
                            public boolean onQueryTextChange(String newText) {
                                // TODO Auto-generated method stub
                                return false;
                            }
                        });
    
            }
    
            return super.onCreateOptionsMenu(menu);
        }
    

提交回复
热议问题