您的位置:首页 > 移动开发 > Android开发

Android 软键盘弹起隐藏的监听

2015-01-24 16:45 393 查看
Android软键盘是没有直接的监听事件的,网上说通过该SDK源码,重新编译可以实现直接的监听,但总感觉复杂,只是没办法中的办法。还有一种是通过监听onLayout函数来实现,但这个有局限性,只针对压缩布局,就是软键盘弹起后,屏幕布局上下压缩的形式,不过相对简单,特定情况下用着也很方便,所以上网搜了下,记下来。

总共两步: 一 复写布局

二 实现监听

一:复写布局,以LinearLayout为例。

package com.yy.my.utils;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.LinearLayout;

/**
* 重写布局,实现压缩模式下软键盘弹出隐藏的监听
*
* @author Administrator
*
* 2015.1.24
*/

public class ResizeLayout extends LinearLayout{

private OnResizeListener mListener;

public interface OnResizeListener{
void OnResize(int w, int h, int oldw, int oldh);
}

public void setOnResizeListener(OnResizeListener l){
mListener = l;
}

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

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

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

if (mListener != null){
mListener.OnResize(w, h, oldw, oldh);
}

}

}


二:activity里面实现监听。

//重写的LinearLayout布局
ResizeLayout mLayout = (ResizeLayout) findViewById(R.id.main_root_layout_id);
mLayout.setOnResizeListener(new OnResizeListener() {   //对布局进行监听
@Override
public void OnResize(int w, int h, int oldw, int oldh) {
if (h < oldh){
//现在的高度小于原有高度,说明软键盘弹起,压缩了布局
}

if (h > oldh){
//现在的高度大于原有高度,说明软键盘隐藏了
}
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: