android - 如何在 Android SearchView 中关闭键盘?

标签 android android-actionbar android-3.0-honeycomb searchview

我在 ActionBar 中有一个 searchView。我想在用户完成输入后关闭键盘。我在 searchView 上有以下 queryTextListener

final SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() { 
    @Override 
    public boolean onQueryTextChange(String newText) { 
        // Do something 
        return true; 
    } 

    @Override 
    public boolean onQueryTextSubmit(String query) {

        showProgress();
        // Do stuff, make async call

        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

        return true; 
    } 
};

基于类似的问题,以下代码应该关闭键盘,但在这种情况下不起作用:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

我也试过了:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(searchView.getWindowToken(), 0);

两者都不起作用。我不确定这是否是 Honeycomb 特定的问题,或者它是否与 ActionBar 中的 searchView 有关,或两者兼而有之。有没有人得到这个工作或知道为什么它不工作?

最佳答案

我正在尝试做类似的事情。我需要从另一个 Activity 启动 SearchActivity 并在加载时让搜索词出现在打开的搜索字段中。我尝试了上述所有方法,但最后(类似于 Ridcully's answer above )我在 onCreateOptionsMenu() 中将变量设置为 SearchView 然后在 onQueryTextSubmit() 中当用户提交新搜索时,code> 在 SearchView 上调用了 clearFocus():

private SearchView searchView;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.search_menu, menu);
    searchView = (SearchView) menu.findItem(R.id.menu_search)
            .getActionView(); // set the reference to the searchView
    searchView.setOnQueryTextListener(this); 
    searchMenuItem = (MenuItem) menu.findItem(R.id.menu_search); 
    searchMenuItem.expandActionView(); // expand the search action item automatically
    searchView.setQuery("<put your search term here>", false); // fill in the search term by default
    searchView.clearFocus(); // close the keyboard on load
    return true;
}

@Override
public boolean onQueryTextSubmit(String query) {
    performNewSearch(query);
    searchView.clearFocus();
    return true;
}

关于android - 如何在 Android SearchView 中关闭键盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7409288/

相关文章:

java - Android:相对布局

Android getWidth、getHeight、getLeft、getRight 在 setScaleX()、setScaleY() 之后不正确

android - 如何从 firebase 中删除条目

android - 操作栏中的微调器只有图标但没有选定的选项

android - 处理 webview 的后退和前进按钮?

java - 如何在android中调出锁屏?

Android Action Bar 选项卡 - 内部 fragment 事务问题

android - 在没有菜单按钮的情况下启动 ICS 模拟器

android - ActionBar Sherlock Progressbar 不显示在 3.1 但在 4.0+

android - WebView with YouTube inside ScrollView on Honeycomb