Вопрос по android, android-widget – Android, как сосредоточиться ActionBar searchView

49

Здравствуйте, мне нужно поместить текст в searchView и сфокусировать / развернуть виджет searchView.

это то, что я пытался, но это не работает

@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();

Ваш Ответ

8   ответов
0
public void setIconified(boolean iconify) {
    if (iconify) {
        onCloseClicked();
    } else {
        onSearchClicked();
    }
}

это код в SearchView

setIconified() работает для меня

0
searchView.setQuery("typeAnything",true);
searchView,.setFocusable(true);

сделает свое дело.

Error: User Rate Limit Exceeded
2

Это работает для меня:

        @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;
        }
4

@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;
}
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededjava.lang.UnsupportedOperationException: This is not supported, use MenuItemCompat.setOnActionExpandListener()Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
0

если SearchView сделан с помощью конфигурации меню, я расширяю вид действия, используя пункт меню.

private var searchMenuItem: MenuItem? = null

// create search menu item
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
    menuInflater.inflate(R.menu.search_menu, menu)
    searchMenuItem = menu?.findItem(R.id.action_search)
    val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager
    (searchMenuItem?.actionView as? SearchView)?.apply {
        setSearchableInfo(searchManager.getSearchableInfo(componentName))
    }
    return super.onCreateOptionsMenu(menu)
}


override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_search)
    setSupportActionBar(findViewById(R.id.toolbar))
    // Execute 'expandActionView' delayed 
    // because I want to focus field only when first start.
    Handler().postDelayed({
        // show field and focus it.
        searchMenuItem?.expandActionView()
    }, 500)
}
0

android:iconifiedByDefault="false"
104

Попробуйте использоватьsearchView.setIconified(false), Это сработало для меня:

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();
}
Error: User Rate Limit ExceededsetIconified(false)Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededsetIconifiedByDefault(false)Error: User Rate Limit ExceededsetIconified(false)Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededonCreateOptionsMenuError: User Rate Limit Exceeded
1

@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();
        }
    });

Я использую android.support.v7.widget.SearchView. Когда пытался установитьmSearchView.setIconified(false); это вошло в бесконечный цикл.

Error: User Rate Limit Exceededandroid.support.v7.widget.SearchViewError: User Rate Limit ExceededsearchView.setIconified(false);
Error: User Rate Limit Exceeded

Похожие вопросы