android– 强制EditText在后退时失去焦点

android– 强制EditText在后退时失去焦点,第1张

概述当用户按下后退按钮隐藏键盘时,我试图强制EditText控件失去焦点.有很多类似的问题已经存在,但几个小时后,我无法使其发挥作用.首先,只是一点点背景.我有一个带有自定义项目的ListView.每个项目都有几个TextView和一个EditText.我有一个AfterTextChanged()方法保存编辑的值.如果有

当用户按下后退按钮隐藏键盘时,我试图强制EditText控件失去焦点.有很多类似的问题已经存在,但几个小时后,我无法使其发挥作用.

首先,只是一点点背景.我有一个带有自定义项目的ListVIEw.每个项目都有几个TextVIEw和一个EditText.我有一个AfterTextChanged()方法保存编辑的值.如果有焦点,我会设置一个样式来突出显示该字段.不幸的是,现在更明显的是,当您隐藏(软)键盘时,EditText实际上不会失去焦点,我认为这令人困惑.如果没有键盘,我希望EditText不会聚焦.

似乎最合理的解决方案是在here中描述的活动中覆盖OnBackpressed().不幸的是,似乎没有调用我的方法.即该字段仍然是焦点,函数中的断点不会触发.

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

我不打算在创作或任何东西上压制键盘,因此使用任何隐形控制技巧也无济于事.

很明显很多人都有这个问题.我相信你们其中一个人已经解决了!你能分享一下你的解决方案吗?

非常感谢!@H_419_13@-Karen

附:我不需要知道如何隐藏键盘.当用户使用后退按钮隐藏键盘时,我需要执行操作.谢谢 :)

解决方法:

根据我的经验,onBackpressed()(至少在活动中默认为@OverrIDe)在按下后退按钮关闭键盘时通常不会触发.据我所知,只有当Back press会在当前活动中启动finish()时才会触发.

下面是一种通过监视视图大小的变化来了解何时显示/隐藏键盘的“Hacky”方式.您还必须在AndroIDManifest.xml中将Activity设置为androID:windowsoftinputMode =“adjustResize”.

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        }     }    });
总结

以上是内存溢出为你收集整理的android – 强制EditText在后退时失去焦点全部内容,希望文章能够帮你解决android – 强制EditText在后退时失去焦点所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:http://outofmemory.cn/web/1115587.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存