- description
开发一个聊天界面,聊天的时候,软键盘会挤压消息列表,目的是在打开软键盘的时候,让消息列表的最新一条消息展示在用户面前
- code
final View view = $(R.id.chat_body);
view.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int heightDiff = view.getRootView().getHeight() - view.getHeight();
// 大于100像素,是打开的情况
if (heightDiff > 100) {
// 如果已经打开软键盘,就不理会
if (keyBoardShown) { return; }
// do something when keyboard show,
// i.e. listView or recyclerView scrolls to bottom
keyBoardShown = true;
return;
}
// 软键盘收起的情况
keyBoardShown = false;
// do something when keyboard hide
}
}
);
reference:
How to check visibility of software keyboard in Android?other code
// 软键盘只影响输入框
mainActivity.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE
);