如何监听android软键盘的隐藏和消失?

 我来答
08物理
推荐于2016-01-30 · 知道合伙人软件行家
08物理
知道合伙人软件行家
采纳数:1141 获赞数:4137
1、国内上市公司资深运维工程师、产品经理 2、百度芝麻将,认证管理员

向TA提问 私信TA
展开全部
原理:自定义布局的onSizeChanged()方法,在其中增加一个监听接口,当软键盘显示或隐藏使得布局尺寸发生改变,就能捕获到这个事件。

  具体方法如下:
  首先,在清单文件Manifest.xml中的对应的Activity标签内设置
  android:windowSoftInputMode=”adjustResize”
  作用是当软键盘显示或隐藏时,该Activity主窗口总是会被调整大小以便留出软键盘的空间。唯有这样才能保证布局触发onSizeChanged()方法。

  然后,自定义一个布局,具体是RelativeLayout、LinearLayout或是其它的,根据实际情况而定,自定义的目的是在其onSizeChanged()方法中增加一个监听接口。这里给出一个自定义RelativeLayout布局代码:

  public class CustomRelativeLayout extends RelativeLayout {

  private OnSizeChangedListener listener;

  public CustomRelativeLayout(Context context) {
  super(context);
  }

  public CustomRelativeLayout(Context context, AttributeSet attrs) {
  super(context, attrs);
  }

  @Override
  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
  super.onMeasure(widthMeasureSpec, heightMeasureSpec);
  }

  @Override
  protected void onLayout(boolean changed, int l, int t, int r, int b) {
  super.onLayout(changed, l, t, r, b);
  }

  @Override
  protected void onSizeChanged(int w, int h, int oldw, int oldh) {

  Log.d(TAG.CUSTOM_VIEW, “onSizeChanged”);
  super.onSizeChanged(w, h, oldw, oldh);
  if (listener != null) {
  listener.onSizeChanged(w, h, oldw, oldh);
  }
  }

  public void setOnSizeChangedListener(OnSizeChangedListener listener) {
  this.listener = listener;
  }

  /** * Activity主窗口大小改变时的回调接口(本示例中,等价于软键盘显示隐藏时的回调接口) */
  public interface OnSizeChangedListener {
  public void onSizeChanged(int w, int h, int oldw, int oldh);
  }
  }

  最后,在程序中使用此接口(xxx.setOnSizeChangedListener(…))即可实现监听键盘隐藏或显示事件。
育知同创教育
2018-06-27 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
如果要监听,目前Android没有提供监听的callback的注册接口,要完美实现这个可能需要改framework。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
郝子琪
2012-07-10 · TA获得超过1746个赞
知道大有可为答主
回答量:1579
采纳率:0%
帮助的人:1474万
展开全部
没有办法去监听,只能去查询软键盘的状态。
-----------------------------------------------------------------------------------------------------
安卓精英团为你解答
安卓精英团欢迎各位精英加入
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式