Auto Collapse ActionBar SearchView on Soft Keyboard close

后端 未结 11 1138
遥遥无期
遥遥无期 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条回答
  •  旧时难觅i
    2020-12-07 21:08

    Just Override onBackPressed like this:

    @Override
        public void onBackPressed() {
            if (searchView.isShown()){
                searchView.onActionViewCollapsed();  //collapse your ActionView
                searchView.setQuery("",false);       //clears your query without submit
                isClosed = true;                     //needed to handle closed by back
            } else{
                super.onBackPressed();
            }
        }
    

    and your onCreateOptionsMenu would inflate the mSearchView like this:

    @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            super.onCreateOptionsMenu(menu);
            getMenuInflater().inflate(R.menu.menu_search, menu);
            mSearchView = (SearchView) menu.findItem(R.id.menu_action_search).getActionView();
            mSearchView.setOnQueryTextListener(this);
            mSearchView.setOnSearchClickListener(this);
            mSearchView.setOnCloseListener(this);
            isClosed = true;
            return true;
        }
    

    have you class implement the following like this:

    public class myActivity extends FragmentActivity implements
        SearchView.OnQueryTextListener, View.OnClickListener, SearchView.OnCloseListener {
    

    which you will also need:

    @Override
    public void onClick(View view) {
        isClosed = false;
    }
    
    @Override
    public boolean onClose() {
        isClosed = true;
        return false;
    }
    

    You will need to make "mSearchView" and "isClosed" both global variables to the activity.

提交回复
热议问题