android開發中,監聽軟鍵盤的狀態(收起或者開啟)

weixin_34279579發表於2015-10-03
  • 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
);

相關文章