返回顶部
首页 > 资讯 > 精选 >Android编程之ListView和EditText发布帖子隐藏软键盘功能详解
  • 633
分享到

Android编程之ListView和EditText发布帖子隐藏软键盘功能详解

androidlistviewedittext 2023-05-30 22:05:47 633人浏览 安东尼
摘要

本文实例讲述了Android编程之ListView和EditText发布帖子隐藏软键盘功能。分享给大家供大家参考,具体如下:在Android开发中,手动调用软件盘的隐藏和显示有时候也是非常常见的需求。EditText控件实现了点击打开软键盘

本文实例讲述了Android编程之ListView和EditText发布帖子隐藏软键盘功能。分享给大家供大家参考,具体如下:

在Android开发中,手动调用软件盘的隐藏和显示有时候也是非常常见的需求。

EditText控件实现了点击打开软键盘输入功能,but why ? 为什么EditText可以点击弹出keyboard,而TextView却不可以,EditText继承TextView做了哪些修改呢?关于这些问题得查看相关具体代码如何实现可以参考,看似简单的控件其实系统封装实现的很复杂。这里告诫和我一样一路自学android的开发者善于思考事件背后的本质,共勉。

开发有个布局是最外层是FrameLayout,包裹了ListView,bottom底部是个edit输入框,当点输入框打开keyboard时候,需要下滑listView隐藏keyboard,但上滑继续滑动listView。

刚开始,我尝试了给listview设置clickListener,设置onScrollListener,重写它的onTouchEvent方法,但是发现并不能达到自己满意的效果(发现code有段时间了,自己都有种修改代码不修改自己满意为止不罢休的纠结感)。

为什么不满意,因为每次listview滑动的时候调用hide keyboard会导致listview闪一下重影现象,因为listview正在滑动调用了hide keyboard,并且Activity设置的是adjustResize会重新onLayout整个布局。(PS:之前也纠结过这个问题,adjustResize属性导致底部的Edit没有跟着keyboard移动,而是等keyboard打开后Edit在layout到合适的位置了。最后总结出的问题是需要调整布局,并且用adjustPan属性,相信类似微信聊天界面肯定也是这样做的,有更好的办法欢迎留言探讨!)

重新了最外层的FrameLayout的onInterceptTouchEvent拦截touch方法。直接贴代码了

@Override  public boolean onInterceptTouchEvent(MotionEvent ev) {  //键盘开 && 第一个scroll dy》0  if(showSoftInput) {    if(mVelocityTracker == null) {      mVelocityTracker = VelocityTracker.obtain();    }    mVelocityTracker.addMovement(ev);    switch (ev.getAction()) {    case MotionEvent.ACTION_DOWN:      downY = (int) ev.getY();      showDispatchTouch = true;      break;    case MotionEvent.ACTION_MOVE:      if(downY > ev.getY()) {        showDispatchTouch = true;      } else {        showDispatchTouch = false;        mVelocityTracker.computeCurrentVelocity(1000);        if(mVelocityTracker.getYVelocity() > 200 && mContext instanceof ActivityReplyDetail) {          ((ActivityReplyDetail)mContext).hideSoftInput();        }      }      break;    default:      break;    }  }    return !showDispatchTouch || isAnimating || super.onInterceptTouchEvent(ev);  }

--结束END--

本文标题: Android编程之ListView和EditText发布帖子隐藏软键盘功能详解

本文链接: https://lsjlt.com/news/221759.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作