【android】scrollview嵌套editText问题记录

在含有EditText和ScrollView的布局中,当粘贴文本并删除时,ScrollView滚动异常。尝试禁用scrollView的computeScroll方法和调整焦点管理未解决问题。目前通过在文本变化监听器中手动平滑滚动到顶部作为临时解决方案。
摘要由CSDN通过智能技术生成

使用场景

editText内容有多高显示多高,禁止滑动,由scrollView提供滑动功能,内部同时嵌套了禁止滑动的图片列表。

问题描述

在铺满一个屏幕的editText中,粘贴一段文本,然后点击软键盘的删除键,scrollView滚动到控件最上方,通过监听scrollView滚动,发现是发生了多段滚动,最后滚动到最上方。但是光标位置仍在粘贴文本末尾,再点击一次删除键,scrollView滚动到正确位置,恢复正常。

解决

起初选用了重写scrollView的computeScroll方法,直接空白,但是粘贴文本的滚动操作无法执行,这个方法太过于理想化。后面认为是scrollView和editText的焦点问题,然后重写了scrollView的fling和getFocusables方法,在发生滚动前,焦点清除,fling方法执行后返回super方法,也无效。

临时方案

在监听文本变化的函数afterTextChanged中,代码手动执行一遍scrollView的smoothScrollto(0, scrollView.getScrollY()),测试反馈正常,但是应该不是最优解。

具体原因需要抽时间重新看一下。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值