最近项目中遇到问题:就是当软键盘弹出,editext输入时,遮挡listview,recyclerview条目,体验效果不好;
网上搜集,验证,找了个好的方法,希望能给大家项目中带来帮助;
通过监听editext计算软键盘高度
通过这个方法即可获得软键盘高度,很简单的。
et_comment.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
//当键盘弹出隐藏的时候会 调用此方法。
@Override
public void onGlobalLayout() {
Rect r = new Rect();
//获取当前界面可视部分
getWindow().getDecorView().getWindowVisibleDisplayFrame(r);
//获取屏幕的高度
int screenHeight = getWindow().getDecorView().getRootView().getHeight();
//此处就是用来获取键盘的高度的, 在键盘没有弹出的时候 此高度为0 键盘弹出的时候为一个正数
srfHeight = screenHeight - r.bottom;
if (srfHeight > 0) {
//让listview滚动到指定条目距离顶部,1/3的软键盘高度,正好在说说下方
lv_cir.getRefreshableView().setSelectionFromTop(cusPos + 1, -srfHeight / 3);
}
}
});