Android键盘状态终极解决办法

自己管理键盘状态

先定义一个接口

public interface OnKeyboardListener {

void isShow(boolean isShow);

}

public OnKeyboardListener getOnKeyboardListener() {

return onKeyboardListener;

}

public void setOnKeyboardListener(OnKeyboardListener onKeyboardListener) {

this.onKeyboardListener = onKeyboardListener;

}

//键盘状态监听

private OnKeyboardListeneronKeyboardListener;

在Activity的跟布局layout上做监听

main_layout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

@Override

    public void onGlobalLayout() {

Rect r =new Rect();

main_layout.getWindowVisibleDisplayFrame(r);

if (main_layout.getRootView().getHeight() - (r.bottom - r.top) > CodeUtil.dip2px(WDYBaseActivity.this,100)//键盘高度) {

setIsShowKeyboard(true);

if (getOnKeyboardListener() !=null)

getOnKeyboardListener().isShow(true);

}else {

setIsShowKeyboard(false);

if (getOnKeyboardListener() !=null)

getOnKeyboardListener().isShow(false);

}

}

});

原理:监听根布局是否被顶高了。用于解决键盘管理混乱的页面。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容