55 votes

Android comment se concentrer sur la recherche de la barre d'action

Bonjour, je dois mettre du texte dans le searchView et concentrer/développer le widget searchView.

c'est ce que j'ai essayé mais ça ne marche pas

 @Override
public boolean onCreateOptionsMenu(final Menu menu) {
...
    SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
    searchView.setQuery(this.filtro, false);
    searchView.setFocusable(true);
    searchView.requestFocus();
    searchView.requestFocusFromTouch();

124voto

farmer.chs Points 409

Essayez d'utiliser searchView.setIconified(false) . Cela a fonctionné pour moi:

 public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    ActionBar actionBar = getActionBar();
    SearchView searchView = new SearchView(this);
    actionBar.setCustomView(searchView);
    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
    searchView.setQuery("test",true);
    searchView.setFocusable(true);
    searchView.setIconified(false);
    searchView.requestFocusFromTouch();
}

4voto

Owen Zhao Points 339

Voici une autre solution.

 @Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main_menu, menu);
    MenuItem menu_search = menu.findItem(R.id.menu_search);


    menu_search.setOnActionExpandListener(new OnActionExpandListener() {
        @Override
        public boolean onMenuItemActionCollapse(MenuItem item) {
            // Do something when collapsed
            return true;  // Return true to collapse action view
        }

        @Override
        public boolean onMenuItemActionExpand(MenuItem item) {
            //get focus
            item.getActionView().requestFocus();
            //get input method
            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
            return true;  // Return true to expand action view
        }
    });
    return true;
}

2voto

Erick Martinez Points 101

Cela fonctionne pour moi:

         @Override
        public boolean onMenuItemActionExpand(MenuItem item)
        {
            if (sm.isMenuShowing()) {
                sm.toggle();
            }
            searchView.setIconified(true);
            KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, 32);
            searchView.onKeyDown(32, event);
            return true;
        }

1voto

CoolMind Points 11

Pour moi les travaux suivants :

 @Override
public boolean onCreateOptionsMenu(Menu menu) {
    ...
    MenuItem miSearch = menu.findItem(R.id.menu_search);
    SearchView mSearchView = (SearchView) miSearch.getActionView();

    mSearchView.setOnSearchClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mSearchView.setFocusable(true);
            mSearchView.requestFocusFromTouch();
        }
    });

J'utilise android.support.v7.widget.SearchView. Lorsqu'il a essayé de définir mSearchView.setIconified(false); il est entré dans une boucle infinie.

0voto

saqib qhan Points 141
searchView.setQuery("typeAnything",true);
searchView.setFocusable(true);

fera l'affaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X