How to dismiss keyboard in Android SearchView?

后端 未结 15 1339
萌比男神i
萌比男神i 2020-12-05 06:27

I have a searchView in the ActionBar. I want to dismiss the keyboard when the user is done with input. I have the following queryTextListener on the searchView



        
15条回答
  •  有刺的猬
    2020-12-05 06:38

    I was trying to do something similar. I needed to launch the SearchActivity from another Activity and have the search term appear on the opened search field when it loaded. I tried all the approaches above but finally (similar to Ridcully's answer above) I set a variable to SearchView in onCreateOptionsMenu() and then in onQueryTextSubmit() called clearFocus() on the SearchView when the user submitted a new search:

    private SearchView searchView;
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.search_menu, menu);
        searchView = (SearchView) menu.findItem(R.id.menu_search)
                .getActionView(); // set the reference to the searchView
        searchView.setOnQueryTextListener(this); 
        searchMenuItem = (MenuItem) menu.findItem(R.id.menu_search); 
        searchMenuItem.expandActionView(); // expand the search action item automatically
        searchView.setQuery("", false); // fill in the search term by default
        searchView.clearFocus(); // close the keyboard on load
        return true;
    }
    
    @Override
    public boolean onQueryTextSubmit(String query) {
        performNewSearch(query);
        searchView.clearFocus();
        return true;
    }
    

提交回复
热议问题