【问题标题】:SearchView gains focus and opens keyboard when returning from another activitySearchView 从另一个活动返回时获得焦点并打开键盘
【发布时间】:2014-02-07 09:46:31
【问题描述】:

当我从另一个活动返回到主活动时,searchView 获得焦点并且键盘打开,我设法通过使用以下方法阻止键盘打开:

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

但这还不够,如果打开并关闭操作栏下拉菜单,键盘会重新出现,因为 searchView 仍然有焦点(记住我只关闭了键盘)。我试图获取对 searchView 的引用并使其失去焦点,但这没有奏效。

所以基本上,我只希望 searchView 永远不会有焦点或提示键盘打开,除非实际触摸了 searchView 文本区域。

【问题讨论】:

标签: android keyboard searchview


【解决方案1】:

这是因为SearchView 是当活动重新进入视图时第一个可聚焦的视图 - 同样的问题can be seen for EditTexts

解决方案是相同的 - 将层次结构中的较早视图设置为可聚焦。就我而言,这是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"
    ... />

现在我可以在进入activity(clearFocus(); requestFocus(...);)的时候关注我的SearchView,然后当你通过搜索结果退出activity,然后按Back返回时,键盘的状态和你时一样离开了。

请注意,链接问题的其他一些解决方案,即 setting windowSoftInputMode="stateUnchanged" on the Activity 对我没有工作。

【讨论】:

  • 我很遗憾“focusableInTouchMode”是实现这项工作的唯一方法:(但它确实有效。
【解决方案2】:

利用Adam S' answer,如果在SearchView 之前的层次结构中没有更早的View,则始终可以像这样包含一个虚拟View

<View
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:focusableInTouchMode="true"/>

<android.support.v7.widget.SearchView
    android:iconifiedByDefault="false"
    ... />

这对我也有用!

【讨论】:

    【解决方案3】:

    在初始化时

    mSearchView.setIconifiedByDefault(false);
    

    回来后,把它放在onResume()onCreateOptionsMenu(如果搜索在菜单中)

    mSearchView.setIconified(false);
    

    然后在您点击searchview的编辑文本之前,当您返回时键盘不会打开

    【讨论】:

      【解决方案4】:

      这在 onResume() 中对我有用;

      searchview.clearFocus();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 2019-09-13
        • 1970-01-01
        • 2020-11-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多