如何在不显示软键盘的情况下使用searchView.setIconified(false)方法

时间:2015-05-28 13:41:21

标签: android android-softkeyboard searchview

我使用此方法在活动开始时显示已打开的搜索结果。

由于我在活动中使用了少量片段,因此我在onPrepareOptionsMenu回调中调用此方法。我想要的行为是,在活动开始时显示打开的searchView和softkeyboard,用户将搜索某些内容并单击ListView项目将显示特定的片段。

但是当用户关闭所有片段并返回活动中的搜索结果时,会再次触发此方法以打开searchView。这里真正让我感到困惑的是,同时软键盘也显示出重叠的搜索结果。

有没有办法打开searchView而不显示软键盘?

@Override
    public boolean onPrepareOptionsMenu(Menu menu) {

        if(MyApp.fragments.size() == 0) {
            searchView.setIconified(false);
            title.setText("");
            if(menu.findItem(R.id.ma_search) != null) menu.findItem(R.id.ma_search).setVisible(true);
        }else if(MyApp.fragments.get(MyApp.fragments.size()-1) instanceof Fragment1){
            title.setText("Title1");
            if(menu.findItem(R.id.ma_search) != null) menu.findItem(R.id.ma_search).setVisible(false);
        }else if(MyApp.fragments.get(MyApp.fragments.size()-1) instanceof Fragment2){
            title.setText("Title2");
            if(menu.findItem(R.id.ma_search) != null) menu.findItem(R.id.ma_search).setVisible(false);
        }else if(MyApp.fragments.get(MyApp.fragments.size()-1) instanceof Fragment3){
            title.setText("Title3");
            if(menu.findItem(R.id.ma_search) != null) menu.findItem(R.id.ma_search).setVisible(false);
        }else if(MyApp.fragments.get(MyApp.fragments.size()-1) instanceof Fragment4){
            title.setText("Title4");
            if(menu.findItem(R.id.ma_search) != null) menu.findItem(R.id.ma_search).setVisible(false);
        }

        return true;

    }

0 个答案:

没有答案