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

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

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

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

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

  • 无法实例化类android.support.v7.widget.SearchView
  • 使用Android工具栏在SearchView中更改TextColor
  • 展开search视图以使用整个操作栏(隐藏其他内容)
  • 如何检测SearchView是否扩展?
  • 显示ActionBarSherlock SearchView总是展开
  • 使用工具栏作为操作栏时,如何设置SearchView的样式?
  • 在操作栏中实现SearchView
  • Android支持库SearchView xml属性queryHint和iconifiedByDefault无法正常工作
  • 这是由于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编辑文本时,键盘不会打开