美文网首页
Android 键盘相关灵异事件

Android 键盘相关灵异事件

作者: 暮雨沉沦 | 来源:发表于2019-11-20 18:59 被阅读0次

1、在ListView或者RecyclerView中,item里的EditView无法打开键盘
需求是这样的,左滑点击item上的一个按钮后进行编辑,然而一直弹不出键盘。
发现是在item的根布局下加了如下代码:

android:descendantFocusability = "blocksDescendants"

删掉就好啦
descendantFocusability 直译是后代聚焦能力的意思,所以字段是控制父控件与子控件的聚焦能力的。

属性的值有三种:
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点

一开始代码中写的blocksDescendants,当然会拦截掉子view的焦点啦。当然不同情况还要具体分析,这个属性只是一个分析点。

2、键盘无法隐藏的灵异事件:
有这么个隐藏键盘的方法:

   protected void hideSoftInputFromWindow( View view, Context context) {
        InputMethodManager inputMethodManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
        inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0)
   }

发现调用了没什么用,然后在有些页面又很灵,有些页面又不灵。搜了半天也为这里flag写错了,一直都没什么用。
其实,在有些页面复杂一些,包含了列表控件,当调用隐藏键盘的方法时,被页面的大量刷新操作阻塞了,导致隐藏没有生效,有效的方法是延时调用此方法,让一拨主线程的任务先过去,再来触发效果很好。
在开发其他功能也是如此,比如有时候发现弹框偶尔弹不出来,可能就是类似问题,主线程执行的任务太多,阻塞住了,都可以同样的思路解决。这告诉我们,虽然都是主线程中干的活,也扛不住一次执行太多,不如少执行一点,多来几个循环

相关文章

  • Android 键盘相关灵异事件

    1、在ListView或者RecyclerView中,item里的EditView无法打开键盘需求是这样的,左滑点...

  • Android 探测软键盘弹出

    Android 没有提供软键盘相关的事件,因此需要通过其它方式实现。在 StackOverflow 找到的普遍认同...

  • 深度浅析 == 和 equals 的区别

    如果你没有深度分析过的话,那么这可能是一个非常灵异的事件。 灵异事件一: 灵异事件二: 灵异事件三: 灵异事件四:...

  • day19 pygame和多线程

    游戏中的事件1、 鼠标相关的事件鼠标事件要关注事件发生的位置:event.pos2.键盘事件键盘事件要关注哪个键被...

  • JS事件

    ?事件的相关术语 事件类型: 鼠标事件、键盘事件事件名称: click、dbclick等事件目标: 表示与发生事件...

  • 前端开发小技巧

    1.ios的键盘弹出和收起事件 2.android的键盘弹出和收起事件 3.pre标签 HTML 元素表示预定...

  • Android 模拟键盘事件

    开发中,遇到了需要模拟键盘事件的问题。在这里做一个简单总结。使用模拟键盘事件,需要知道对用按键的对照表。参考这个博...

  • Android全屏模式下软键盘监听

    Android开发的同学都知道,Android系统是不提供所谓的软键盘监听的,只提供了开关软键盘的相关api 如下...

  • android监听软键盘退格(删除)事件

    android监听软键盘退格(删除)事件 packagecn.deerlands.deerland.mvp.ui....

  • 事件分发

    更简单的学习Android事件分发 Android中与事件分发相关的方法主要包括dispatchTouchEven...

网友评论

      本文标题:Android 键盘相关灵异事件

      本文链接:https://www.haomeiwen.com/subject/ozcaictx.html