对于一款APP中,我们经常会使用到搜索框——SearchView,想必大家都不陌生,今天呢我给大家分享一个我在使用过程中意外发现的一种情况。

SearchView使用时必定涉及到输入法,常用的有搜狗输入法、qq输入法等第三方输入法,安卓系统也给我们提供了自带输入法。一般我们在打字

过程中会出现备选词区域,我们可以自行选择填入SearchView搜索框的内容;但是在使用中发现一种情况,点击某个字母会立即填入搜索框内,

没有出现备选区域,如果mSearchView设置了如下监听事件就会在填入第一个字母(注意是打字时出现的第一个字母,而不是完整的汉字内容)的时候就触发事件

mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
Log.i(TAG, "onQueryTextSubmit-->"+query);
return false;
}

@Override
public boolean onQueryTextChange(String newText) {
//隐藏输入框,该方法未给出
InputMethodUtil.hideInput(StaffInfoActivity.this);
return true;
}
});
解决方案:
<android.support.v7.widget.SearchView
android:id="@+id/sv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:iconifiedByDefault="false"
android:imeOptions="actionDone"
android:inputType="text"/>
<!--android:imeOptions="actionDone"-->
<!--SearchView增加该属性可以解决使用系统自带输入法,打字立即填入输入框问题,先出现备选词-->

即始终让输入法打字时出现备选区域。

意外中发现的知识,多部手机测试有效,大家可以参考,有不明白的可以留言讨论,以上内容可能有讲解的不详细的地方,望见谅!