Android 软键盘上面 输入框弹起 计算软键盘高度法实现
Posted 潇潇微雨up
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 软键盘上面 输入框弹起 计算软键盘高度法实现相关的知识,希望对你有一定的参考价值。
大概方法: OnGlobalLayoutListener方法监听window的变化 如果可见屏幕的高度小于屏幕高度的80% 则说明弹出了
这种方式通常是在 默认的弹出冲突了 或者已经使用了默认的弹出方式的情况下使用。。
public void addOnSoftKeyBoardVisibleListener(Activity activity)
final View decorView = activity.getWindow().getDecorView();
decorView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener()
@Override
public void onGlobalLayout()
Rect rect = new Rect();
decorView.getWindowVisibleDisplayFrame(rect);
//计算出可见屏幕的高度
int displayHight = rect.bottom - rect.top;
//获得屏幕整体的高度
int hight = decorView.getHeight();
//获得键盘高度
keyboardHeight = hight - displayHight;
boolean visible = (double) displayHight / hight < 0.8;
if (visible != isVisiableForLast)
// listener.onSoftKeyBoardVisible(visible,keyboardHeight );
// ToastUtils.showSuccess(getApplicationContext(),"变化了 "+ visible);
if (visible) //软键盘显示并且pop显示
if (popEditWindow != null && popEditWindow.isShowing())
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, DisplayUtil.dip2px(50));
layoutParams.topMargin = displayHight - DisplayUtil.dip2px(50);
relEnter.setLayoutParams(layoutParams);
relEnter.setVisibility(View.VISIBLE);
else
if (popEditWindow != null && popEditWindow.isShowing())
relEnter.setVisibility(View.GONE);
//hiddenEditViewPop2();
isVisiableForLast = visible;
);
以上是关于Android 软键盘上面 输入框弹起 计算软键盘高度法实现的主要内容,如果未能解决你的问题,请参考以下文章