Android how to focus ActionBar searchView

后端 未结 9 1249
野性不改
野性不改 2020-12-23 09:19

Hello i need to put some text inside the searchView and focus/expand the searchView widget.

this is what i tried but it doesn\'t work

@Override
publi         


        
相关标签:
9条回答
  • 2020-12-23 09:55

    Here is another 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;
    }
    
    0 讨论(0)
  • 2020-12-23 09:56
    searchView.setQuery("typeAnything",true);
    searchView.setFocusable(true);
    

    will do the trick.

    0 讨论(0)
  • 2020-12-23 09:59

    This works for me:

            @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;
            }
    
    0 讨论(0)
  • 2020-12-23 09:59

    In the activity xml you can use this line:

    android:iconifiedByDefault="false"
    
    0 讨论(0)
  • 2020-12-23 10:03

    Try using searchView.setIconified(false). This worked for me:

    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();
    }
    
    0 讨论(0)
  • 2020-12-23 10:03

    For me the following works:

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

    I use android.support.v7.widget.SearchView. When tried to set mSearchView.setIconified(false); it entered into an infinite loop.

    0 讨论(0)
提交回复
热议问题