当我从另一个活动返回主活动时,searchView 获得焦点并且键盘打开,我设法使用以下方法阻止键盘打开:
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
但这还不够,如果打开并关闭操作栏下拉菜单,键盘会重新出现,因为 searchView 仍然具有焦点(记住我只关闭了键盘)。我试图获取对 searchView 的引用并使其失去焦点,但这没有奏效。
所以基本上,我只是希望 searchView 永远不会获得焦点或提示键盘打开,除非实际触摸了 searchView 文本区域。
这是由于SearchView
当活动重新进入视图时成为第一个可聚焦的视图 - 同样的问题可以看到EditTexts https://stackoverflow.com/q/1555109/1217087.
解决方案是相同的 - 将层次结构中较早的视图设置为可聚焦。就我而言,这是Toolbar
my SearchView
位于:
<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"
... />
现在我可以专注于我的SearchView
进入活动时(clearFocus(); requestFocus(...);
),那么当您通过搜索结果退出 Activity,然后按“返回”返回时,键盘将处于与您离开时相同的状态。
请注意,有关链接问题的其他一些解决方案,即setting windowSoftInputMode="stateUnchanged"关于活动 https://stackoverflow.com/a/2611031/1217087 did not为我工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)