soft-input-event icon indicating copy to clipboard operation
soft-input-event copied to clipboard

如果输入框在上方,用这个方法会强行把输入框拉下来,上面一片空白

Open luoqqsh opened this issue 2 years ago • 8 comments

问题描述

输入框edittext放在屏幕上方即可明显复现,有标题栏的话看的更清楚

期望行为

如何复现

输入框edittext放在屏幕上方即可明显复现,有标题栏的话看的更清楚。 在你的demo上修改布局,把输入框放到recyclerview的上面,此时输入框在顶部,按理说是不需要因为弹出键盘而被拉下来的。 不然就会出现类似这种很奇怪的页面 image 我正在编辑身份证号这一栏,本来这个输入框是在上面的,不需要被输入框拉下来,这样上面多出了一块不正常的空白区域,使用recyclerview或scrollview+LinearLayout都会有同样的问题

fork仓库并复现问题可以快速解决, 猜测只会让问题晦涩难懂, 耽误所有人时间

截图

异常堆栈信息或者手机截图/视频(拖拽到输入框即可上传)

版本

  • soft-input-event:最新版本。设备:所有机型设备都一样的情况,找屏幕大的,看的比较明显
  • Android:
  • 设备型号:

luoqqsh avatar Apr 27 '23 02:04 luoqqsh

能fork仓库复现吗?

liangjingkanji avatar Apr 27 '23 02:04 liangjingkanji

在你的demo上activity_main.xml修改,把输入框放到recyclerview的上面,此时输入框在顶部,按理说是不需要因为弹出键盘而被拉下来的。就是这个导致了我截图的异常页面。需要fork仓库的话要晚点,我的描述很容易复现的

luoqqsh avatar Apr 27 '23 03:04 luoqqsh

我这边的需求就像截图一样,一整个屏幕就像填表格一样,左边是要填写的说明,右边是可编辑的内容,每一行都是一个textview+edittext,可以滚动。 期望自动判断,有被挡住的才被键盘推上去,不会被挡住的,不受影响。或者说,当编辑框已经在顶部时,就不要再继续滚动了,强行拉下来。

luoqqsh avatar Apr 27 '23 03:04 luoqqsh

https://github.com/luoqqsh/soft-input-event fork了,在你原来首页下方发送的边上加了个jump按钮,跳转到新页面,然后你点上方的输入框就能看到问题

luoqqsh avatar Apr 27 '23 04:04 luoqqsh

  1. 本框架并未支持多个控件自动悬浮在键盘上, 设计之初由于实现难度更大并且我个人没有这个需求所以没有去支持
  2. 重复调用setWindowSoftInput会存在覆盖效果, 并不会正常生效

支持多个控件的需求得等我有空才能支持(工作繁忙), 如果你有实现这部分功能可以发起pr合并

liangjingkanji avatar Apr 30 '23 22:04 liangjingkanji

问题不在于多个控件自动悬浮在键盘上,而是会把在上面的输入框(键盘不会挡住的)给拉下来了。 image 在这里加个判断就可以解决,我看你另一个解决方案就有做这个处理 image

luoqqsh avatar May 11 '23 07:05 luoqqsh

对于你写得框架,存在着一些疑问,所以我没提PL。如果有空,能解答下吗? 1. image 这个判断的方法是来自官方文档demo,还是根据你实测的结果写得。WindowInsetsAnimationCompat这个方法是30之后才有的,但我目前没发现有不兼容的情况 2. image 上面绿色框的设置成SOFT_INPUT_ADJUST_NOTHING这个是为啥?实测设置了这个,会导致下面的回调接口不起作用。

luoqqsh avatar May 11 '23 08:05 luoqqsh

这是我认为市面上没有一款简单并且自带动画的键盘监听工具才设计的一个工具, 但是兼容问题可能的确需要一直迭代

  1. 这是我根据反复尝试试出来的....
  2. 如果不设置SOFT_INPUT_ADJUST_NOTHING, 键盘弹出后会无法成功计算布局应该滑动的距离

liangjingkanji avatar May 11 '23 10:05 liangjingkanji