我使用v7支持SearchView
作为MenuItem
,我遇到了一个奇怪的问题。只要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);
}