android开发中,监听软键盘的状态(收起或者打开)

  • 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
      }
    }
  );
// 软键盘只影响输入框
mainActivity.getWindow().setSoftInputMode(
  WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE
);

推荐阅读更多精彩内容