/**
* 如果输入法显示将指定的布局向上调整100DP,如果输入法隐藏了将指定的布局向下调整100DP
*
* @param context
* @param root需要调整的布局,为布局文件最外的布局
* @param width需要调整的宽度
* @param height需要调整的高度
*/
public static final void ControlLayout(final Context context,
final View root, int width, int height) {
final int heightOffset = height;
final int widthOffset = width;
root.getViewTreeObserver().addOnGlobalLayoutListener(
new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect rect = new Rect();
root.getWindowVisibleDisplayFrame(rect);
int heightDiff = root.getRootView().getHeight()
- (rect.bottom - rect.top);
// 键盘显示
if (heightDiff > 100) {
root.scrollTo(
PhoneEnvUtils.dpTopx(context, widthOffset),
PhoneEnvUtils.dpTopx(context, heightOffset));
// 键盘隐藏
} else {
root.scrollTo(0, 0);
}
}
});
}