SearchView获得焦点,并从另一个活动返回时打开键盘

当我从另一个活动返回到主要活动,searchView获得焦点和键盘打开,我设法停止打开键盘使用:

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

但这是不够的,如果操作栏下拉菜单打开和closures键盘重新出现,因为searchView仍然有焦点(记得我只closures键盘)。 我试图得到一个对searchView的引用,并使其失去焦点,但这并没有奏效。

所以基本上,我只是想让searchView永远不会有焦点或提示键盘打开,除非searchView文本区域被实际触动。

Solutions Collecting From Web of "SearchView获得焦点,并从另一个活动返回时打开键盘"

这是由于SearchView是第一个将焦点放在视图中的可视对象 – 同样的问题可以在EditText看到 。

解决scheme是相同的 – 在层次结构中设置一个较早的视图可以聚焦。 在我的情况下,这是我的SearchView上的Toolbar

 <android.support.v7.widget.Toolbar style="@style/ToolbarStyle" android:focusableInTouchMode="true" android:id="@+id/search_activity_toolbar" android:layout_height="?attr/actionBarSize" android:layout_width="match_parent"/> <android.support.v7.widget.SearchView android:iconifiedByDefault="false" ... /> 

现在我可以在进入活动( clearFocus(); requestFocus(...); )的时候关注我的SearchView ,然后当通过search结果退出活动,然后按Back返回时,键盘处于相同的状态就像你离开的时候一样

请注意,链接问题上的一些其他解决scheme,即在Activity上设置windowSoftInputMode="stateUnchanged" 不适用于我。

同时初始化

 mSearchView.setIconifiedByDefault(false); 

而当回来时,把这个onResume()onCreateOptionsMenu (如果search是在菜单中)

 mSearchView.setIconified(false); 

然后,当你点击searchview编辑文本时,键盘不会打开