首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 隱藏軟鍵盤的正確時機與方法

     編輯:程式設計綜合問答

常見失敗代碼

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0); // onCreate 中呼叫無效

在 onCreate 或 View 尚未附加到視窗時,getWindowToken() 回傳 null,導致隱藏失敗。

正確做法一:在 Window 層級預設隱藏(推薦)

// 在 Activity onCreate 的 setContentView 之前
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

這會讓 Activity 啟動時**預設不彈出鍵盤**,除非使用者主動點擊 EditText。

正確做法二:在 View 附加後動態隱藏

editText.post(() -> {
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
});

用 post(Runnable) 確保 View 已有 Window Token。

其他實用場景

  • 點擊空白處收鍵盤:在根布局設定 android:focusableInTouchMode="true" 並實作 OnTouchListener 呼叫隱藏。
  • DialogFragment 中:getDialog().getWindow().setSoftInputMode(...)。
  • 強制顯示:imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved