Android支持SearchView:软键盘打开后立即消失

时间:2017-12-01 13:06:34

标签: android

我使用v7支持SearchView作为MenuItem,我遇到了一个奇怪的问题。只要SearchView展开,软键盘就会短暂显示然后消失。这不会发生在所有设备上。我的预期流量:

  • 用户点按SearchView
  • SearchView展开,键盘显示
  • 如果用户在展开SearchView时取消键盘,则如果用户点击展开的SearchView,键盘应重新出现。

任何帮助解决此问题的行为都将受到赞赏。

我的代码如下:

菜单XML文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/action_search"
        android:icon="@drawable/search_icon"
        android:title="Search"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="ifRoom|collapseActionView" />
</menu>

活动onCreateOptionsMenu

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_songs, menu);
    mSearchItem = menu.findItem(R.id.action_search);
    mSearchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search));
    mSearchView.setMaxWidth(Integer.MAX_VALUE);
    mSearchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus) {
                openKeyboard(v.findFocus());
            } 
        }
    });
    return true;
}

最后,

openKeyboard方法

private void openKeyboard(View view) {
    InputMethodManager inputMethodManager =
            (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    inputMethodManager.showSoftInput(view, 0);

}

0 个答案:

没有答案