强制 EditText 在按下后退时失去焦点

2023-11-24

当用户按下后退按钮隐藏键盘时,我试图强制 EditText 控件失去焦点。已经有很多类似的问题了,但是几个小时后,我还没有能够让它发挥作用。

首先,简单介绍一下背景。我有一个带有自定义项目的 ListView。每一项都有多个 TextView 和一个 EditText。我有一个 AfterTextChanged() 方法保存编辑后的值。我设置了一种样式来突出显示具有焦点的字段。不幸的是,现在更明显的是,当您隐藏(软)键盘时,EditText 实际上并没有失去焦点,我认为这很令人困惑。如果没有键盘,我希望 EditText 不聚焦。

似乎最合理的解决方案是在活动中重写 OnBackPressed() ,如下所述here。不幸的是,我的方法似乎没有被调用。 IE。该字段仍然处于焦点状态,并且函数中的断点不会触发。

同样,活动上的 OnKeyUp() 侦听器不会触发,并且 Xamarin 似乎不支持 EditText 控件的 OnKeyUp 处理程序。

我并不是想在创建时抑制键盘或其他任何东西,因此使用任何不可见的控制技巧也无济于事。

显然很多人都有这个问题。我确信你们中的一个人已经解决了这个问题!您能分享一下您的解决方案吗?

太感谢了! -凯伦

附:我不需要知道如何隐藏键盘。当用户用后退按钮隐藏键盘时,我需要采取行动。谢谢 :)


根据我的经验,按下后退按钮关闭键盘时 onBackPressed() (至少是活动中默认的 @Override )通常不会触发。据我所知,只有当按“后退”键对当前活动启动 finish() 时,它才会触发。

下面是一种通过监视视图大小的变化来了解键盘何时显示/隐藏的“hacky”方法。您还必须将 Activity 设置为android:windowSoftInputMode="adjustResize"在 AndroidManifest.xml 中。

final View activityRootView = findViewById("Your main View");
    activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        Rect r = new Rect();
        //r will be populated with the coordinates of your view that area still visible.
        activityRootView.getWindowVisibleDisplayFrame(r);

        int heightDiff = activityRootView.getRootView().getHeight() - (r.bottom - r.top);
        if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard...
          //Keyboard is shown


        }
        if(heightDiff <= 100) {
            //Keybaord not shown
        }
     }
    });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

强制 EditText 在按下后退时失去焦点 的相关文章

随机推荐

  • C#:数字的通用接口

    我正在尝试执行一些独立于数字类型的通用数字操作 但是 我知道没有办法使用泛型来做到这一点 第一个想法是使用 where 语句过滤传入类型 但所有数字类型都是封闭的 因此对于通用过滤器无效 此外 泛型不允许标准数字运算 加法 移位等 因此我能
  • 如何将 Python 3 与 Google App Engine 本地开发服务器结合使用

    我有一个本地 Python 应用程序配置为 runtime python in it s app yaml文件 当启动本地开发服务器时 dev appserver py app yaml 一切皆好 由于GAE的本地开发服务器默认使用Pyth
  • 在 pandas.DataFrame 的对角线上设置值

    我有一个 pandas 数据框 我想看到对角线为 0 import numpy import pandas df pandas DataFrame numpy random rand 5 5 df Out 6 0 1 2 3 4 0 0 5
  • 从 [Code] 退出 Inno Setup 安装

    是否可以从其中的功能退出安装 Code 使用 Inno Setup 创建的安装程序的一部分 我对设置退出代码不感兴趣 我想做的是对要求执行自定义检查 如果以前未安装该要求 则退出安装 为了防止安装程序运行 当先决条件测试失败时 只需返回Fa
  • Android Studio 的设备选择器在 Gradle Build 完成之前显示

    在 Android Studio 1 5 之前 设备选择器会在 Gradle Build 完成时显示 这允许使用构建时间来物理配置设备 进行任何最后一刻的更改或确保设备在安装时实际连接 如果我想取消 gradle 运行而不中断我的工作流程
  • 追踪 SciPy 的 `ttest_ind()` 函数所做的假设

    我正在尝试编写自己的 Python 代码来计算一尾独立 t 检验和二尾独立 t 检验的 t 统计量和 p 值 我可以使用正态近似 但目前我尝试仅使用 t 分布 我未能成功地将 SciPy 统计库的结果与我的测试数据进行匹配 我可以用一双新的
  • 如何让docker-compose在M1芯片上工作?

    我是 m1 macbook 的新手 在运行 docker compose 时遇到问题 如下所示 version 3 7 services search platform linux x86 64 build context dockerfi
  • 在 PyTorch 中用向量替换对角线元素

    我一直在到处寻找与 PyTorch 等效的东西 但我找不到任何东西 L 1 np tril np random normal scale 1 size D D k 0 L 1 np diag indices from L 1 np exp
  • 如何在 Discord.js 中检查消息是否为私信?

    目前我使用的是最新版本Discord js v13 1 0 我希望能够检测某条消息是否是 DM 我尝试制作一个messageCreate事件并执行 if 语句来检查通道是否为 DM client on messageCreate messa
  • “以不同用户身份运行”Visual Studio,无法清除缓存的 TFS 凭据

    Update我设法通过向用户授予使用凭据集 2 远程连接到桌面的权限来解决此问题 从而能够从凭据管理器中删除存储的凭据 I log onto my server with one set of credentials and open Vi
  • Spring安全过滤器身份验证成功但发回403响应

    我有一个带有以下网络安全配置的 Spring Boot 应用程序 Override protected void configure HttpSecurity http throws Exception http sessionManage
  • 使用 TypeScript 和 React-Redux 时推断映射的 props

    我找到了一种在使用时获得类型安全的方法mapStateToProps from react redux as 有记录的您可以定义一个接口并参数化React Component
  • std::async 不能异步工作

    我有以下非常简单的代码 void TestSleep std cout lt lt TestSleep lt lt std endl sleep 10 std cout lt lt TestSleep Ok lt lt std endl v
  • 使用 tc 模拟特定端口上的网络延迟

    我正在尝试使用 ubuntu 上的 tc 命令模拟来自源端口 7000 的 tcp 数据包的固定时间延迟 我使用的命令是 sudo tc qdisc add dev eth1 root handle 1 prio sudo tc qdisc
  • 将 Curl 客户端 ssl 移至 Guzzle

    我正在使用 Guzzle v3 9 2 以及 php 5 3 和 php 5 5 我有以下使用 ssl 客户端证书的工作卷曲代码 url https example com cert file path to certificate pem
  • SPARQL 查询传递

    我是 SPARQL 的初学者 想知道是否有一个查询可以帮助我返回传递关系 例如下面的 n3 文件 我想要一个返回 a 与 c 相同 或类似内容的查询 谢谢 prefix
  • 我们如何或可以通过 npm 与 Meteor 使用节点模块?

    我们如何或者我们可以通过 npm 使用节点模块Meteor 或者这取决于包装API 或者有推荐的规定方法吗 流星1 3于 2016 年 3 月 28 日发布 为应用程序提供完整的 ES6 ES2015 模块支持和开箱即用的 NPM 支持 应
  • ASP.Net Core:使用共享项目在多个项目之间共享静态资源(css / js)

    从这里汲取灵感 http rion io 2017 03 22 sharing is caring using shared projects in asp net 我尝试使用共享项目在多个 ASP Net Core 项目之间共享静态资产
  • 正则表达式匹配最后一个空格字符

    我需要一些帮助 我正在寻找一个与字符串中最后一个空格字符匹配的正则表达式 我正在使用 JavaScript 和经典 ASP 我有一长串文本 我将其修剪为 100 个字符 我想删除最后一个字符 以避免由于 100 个字符的限制而修剪单词时出现
  • 强制 EditText 在按下后退时失去焦点

    当用户按下后退按钮隐藏键盘时 我试图强制 EditText 控件失去焦点 已经有很多类似的问题了 但是几个小时后 我还没有能够让它发挥作用 首先 简单介绍一下背景 我有一个带有自定义项目的 ListView 每一项都有多个 TextView