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

2024-04-16

当我从另一个活动返回主活动时,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(使用前将#替换为@)

从另一个 Activity 返回时 SearchView 获得焦点并打开键盘 的相关文章

  • build.gradle 文件中的 abiFilters 属性是什么?

    我找到了关于什么的文档ABI https developer android com ndk guides abis html是 但我找不到任何有关 ndk abiFilters 属性的确切用途的文档 具体有几个问题 如果我设置该属性 列出
  • 如何更新 Android 上的 Google Analytics 清单?

    我正在尝试禁用 Google Firebase Analytics 的自动屏 幕报告 在里面Firebase 博客文章 https firebase googleblog com 2020 08 google analytics manua
  • 即使卸载后,旧的 GCM 令牌还会继续存在吗?

    我们一直致力于 GCM 实现 并注意到分配给应用程序安装的设备地址即使卸载应用程序也可以继续存在 因此 我们安装一个应用程序 获取令牌 A 设备订阅特定警报类型 1 消息令牌 A 并取得巨大成功 然后我们卸载该应用程序 不 我们重新安装 接
  • Android 4+ 获取联系人组时出现重复条目

    我使用以下查询获取所有联系人组 get list of contact groups from ContactsContract Cursor groups cursor getContentResolver query ContactsC
  • Android:如何创建MotionEvent?

    MotionEvent没有获取构造函数 我想在单元测试中手动创建MotionEvent 那么如何获取它 谢谢 您应该使用静态之一obtain的方法MotionEvent类来创建一个新事件 最简单的方法 除了从现有事件包装新事件之外 是 st
  • 使用 Eclipse 的 Android“Hello World”教程

    我尝试编写我的第一个应用程序 Hello World 我已经遇到了一个无法修复的错误 当我运行该程序时 我得到 无效的命令行参数 文件 提示 使用 foo 启动名为 foo 的虚拟设备 请使用 help 获取更多信息 有谁知道这意味着什么以
  • 如何从屏幕上的任意位置拖动底页?

    我正在尝试实现类似 YouTube 的体验 并允许用户从屏幕中的任何位置拖动底部工作表 我尝试了很多解决方案没有任何帮助 我终于从这个解决方案中找到了解决方案在外部区域达到阈值后允许 BottomSheet 向上滑动 https stack
  • 更改 Android 软键盘示例设计、按钮和背景图像

    我正在通过修改 SDK 中的 android 软键盘示例来构建自定义键盘 我想更改按钮和背景的图像 但我无法弄清楚这些值的存储位置 它们存储在哪里或者我如何更改图像或简单的颜色 在 onClick 方法中 您需要更改按钮的图像 这样 pub
  • 自定义用户代理字符串或标头,无需修改 cordova 库

    我有一个与 ASP NET MVC Web 应用程序交互的 Android Phonegap Cordova 应用程序 我正在尝试检测服务器端是否从浏览器或我的 Phonegap Cordova 应用程序加载网页 我考虑过以下几种方法 更改
  • 限制特定设备销售应用程序?

    是否可以通过特定设备或设备的功能 屏幕分辨率 处理器 磁盘空间等 来限制 Android Market 上应用程序的销售 我知道我会受到人们的轰炸 他们说如果你的应用程序设计得好 它应该能够在任何尺寸的设备上运行 这一切都很好 但出于某些原
  • 如何在android文本视图的任意一端插入文本?

    是否可以有一个文本视图 其中在文本视图的最左侧包含一些文本 在文本视图的最右侧包含一些文本 例如 我想要一个应该像这样显示的文本视图 文字 a 可以使用单个 TextView 只需将文本放入 HTML 格式即可 例如
  • Firebase 依赖项:“警告:API 'variant.getMergeResources()' 已过时并已被替换”[重复]

    这个问题在这里已经有答案了 我最近开始使用 firebase 并按照官方指南添加了一些依赖项到我的项目中以便能够使用它 以下是我添加到新创建的项目中的依赖项 apply plugin com google gms google servic
  • Apache HttpClient 摘要式身份验证

    基本上我需要做的是执行摘要身份验证 我尝试的第一件事是可用的官方示例here http svn apache org repos asf httpcomponents httpclient tags 4 0 1 httpclient src
  • 单视图布局文件:编译器是否使用布局/视图组自动换行?

    如果我有一个只包含一个布局文件TextView 我可以毫无问题地从内部充气它activity 但是 如果我尝试膨胀一个包含单个自定义视图的类似布局文件 那么我会得到一个通货膨胀例外 在这种情况下 我可以获得自定义视图来膨胀的唯一方法是将其包
  • java.lang.IndexOutOfBoundsException:无效索引 7,大小为 7

    我正在尝试实现视图寻呼机 在我的视图寻呼机图像来自服务器 我能够显示和滚动 但当我到达最后一个图像时 它显示错误并且应用程序崩溃 以下是我的代码片段 public class Test Pager extends Activity priv
  • Android 动态删除按钮

    我有一个按钮 当我按下它时 我想将其删除 而不是使其不可见 我读到我可以使用layout removeView mybutton 但布局是什么 我怎样才能在我的活动中得到它 Button showQuestion private void
  • Dagger 2.10 Android 子组件和构建器

    使用新的 2 10 中 dagger android 类 我尝试使用依赖于其他模块的子组件来注入东西 因此 有一个带有这些模块的设置器的构建器 有关的文档https google github io dagger android html
  • 每次我们想在应用程序中更改字体时,是否都必须复制 Font TTF

    以前 为了使我的应用程序可以在 Gingerbread 及以上设备中运行 我必须将 Robotto 字体资源复制到 asset 文件夹中 这是因为 Gingerbread 本身不附带 Robotto 字体 但是 假设我决定仅将我的应用程序部
  • 如何在 Android 上的 SharedPreferences 中保存/存储对象?

    我需要在很多地方获取用户对象 其中包含很多字段 登录后 我想保存 存储这些用户对象 我们如何实现这样的场景呢 我无法像这样存储它 SharedPreferences Editor prefsEditor myPrefs edit prefs
  • Android:创建自定义形状进度条的最佳方法

    我想创建一个自定义形状的进度条 它会根据其进度改变颜色 但这几乎是一个不同的问题 那么 创建如下图所示的自定义形状进度条的最佳方法是什么 抱歉 MS Paint 绘图技巧不佳 为了拥有所有可能性 您应该创建一个从进度条派生的自定义类并完全重

随机推荐