tim*_*117 12 keyboard android searchview
当我从另一个活动返回到主活动时,searchView获得焦点并且键盘打开,我设法通过使用以下方式阻止键盘打开:
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Run Code Online (Sandbox Code Playgroud)
但这还不够,如果打开并关闭操作栏下拉菜单,键盘会重新出现,因为searchView仍然具有焦点(记住我只关闭了键盘).我试图获得对searchView的引用并使其失去焦点,但这并没有奏效.
所以基本上,我只是希望searchView永远不会有焦点或提示键盘打开,除非实际触摸了searchView文本区域.
Ada*_*m S 20
这是因为SearchView当活动重新进入视图时,它是第一个可聚焦的视图 - s 可以看到EditText同样的问题.
解决方案是相同的 - 将层次结构中的早期视图设置为可聚焦.在我的情况下,这是Toolbar我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"
... />
Run Code Online (Sandbox Code Playgroud)
现在我可以SearchView在进入活动(clearFocus(); requestFocus(...);)时关注我,然后当您通过搜索结果退出活动时,然后按返回返回,键盘处于与您离开时相同的状态.
需要注意的是一些关于链接的问题,即其他解决方案的设置windowSoftInputMode="stateUnchanged"上的活动并没有为我工作.
小智 7
利用Adam S 的回答,如果View在 之前的层次结构中没有任何更早的内容SearchView,则可以始终包含一个View像这样的虚拟对象:
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:focusableInTouchMode="true"/>
<android.support.v7.widget.SearchView
android:iconifiedByDefault="false"
... />
Run Code Online (Sandbox Code Playgroud)
这也对我有用!
| 归档时间: |
|
| 查看次数: |
6158 次 |
| 最近记录: |