通过网上搜索关于软键盘的隐藏弹出的监听,有几种方式,其中最有效的方式是在View的Onlayout()里面做文章
具体代码:
将布局视图自定义,重写onlayout()方法,然后在主Activity里面调用接口就可以了
/** * 为了监听软键盘的弹出隐藏 * */ public class ResizeLayout extends LinearLayout { private InputListener mListener; public interface InputListener { void OnInputListener(boolean isHideInput); } public void setOnResizeListener(InputListener l) { mListener = l; } public ResizeLayout(Context context, AttributeSet attrs) { super(context, attrs); } private boolean mHasInit = false; private boolean mHasKeyboard = false; private int mHeight; @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { // TODO Auto-generated method stub super.onLayout(changed, l, t, r, b); if (!mHasInit) { mHasInit = true; mHeight = b; System.out.println("mHeight= " + b); } else { mHeight = mHeight < b ? b : mHeight; } if (mHasInit && mHeight > b) { // mHeight代表键盘的真实高度 ,b代表在窗口中的高度 mHeight>b mHasKeyboard = true; mListener.OnInputListener(false); } if (mHasInit && mHasKeyboard && mHeight == b) { // mHeight = b mHasKeyboard = false; mListener.OnInputListener(true); } }