фокусировка на searchview в меню при нажатии кнопки

#android #menu #menuitem #searchview

#Android #меню #menuitem #searchview

Вопрос:

В меню есть searchview, и у меня есть кнопка. При нажатии кнопки мне нужно, чтобы searchview открывался для поиска, что означает, что фокус должен быть на searchview для ввода поисковых текстов.

  @Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_fooddoof, menu);

     searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.search));
       TextView searchText = (TextView)
            searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
    Typeface myCustomFont = Typeface.createFromAsset(getAssets(), "fonts/ProximaNovaRgRegular.ttf");
    searchText.setTypeface(myCustomFont);


   searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
       @Override
       public boolean onQueryTextSubmit(String query) {
               Intent intent = new Intent(descStore.this, listdisplay.class);
               intent.putExtra("deskey", query);
               startActivity(intent);
               return false;

       }

       @Override
       public boolean onQueryTextChange(String newText) {
           //android.widget.Filter filter = descAdapter.getFilter();
           //filter.filter(newText);
           return true;

       }
   });

   searchView.setSubmitButtonEnabled(true);
   return true;

}
  

При нажатии кнопки:

  @Override
public void onClick(View v) {
    if (v == mViews.description1) {
        searchview.seticonified(false);
    }

}
  

Я пробовал опцию seticonified, но она не работает. Пожалуйста, помогите.

Ответ №1:

Вы можете запросить фокус searchview, как показано ниже

  @Override
        public void onClick(View v) {
              switch (view.getId()) {
                case R.id.your_button_id:
                  searchview.seticonified(false);
                  searchview.requestFocus(); //request focus of the view
                break;
            }
        }