<activity
android:name=".MainActivity"
android:windowSoftInputMode="stateAlwaysHidden|adjustResize" />
stateAlwaysHidden:Activity 創建時自動隱藏鍵盤。adjustResize:鍵盤彈出時壓縮佈局,避免遮擋輸入框。
// 隱藏鍵盤
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
// 移除焦點
editText.clearFocus();
// 或設置其他視圖可聚焦
otherView.requestFocus();
<LinearLayout
android:focusable="true"
android:focusableInTouchMode="true"
...>
<EditText ... />
</LinearLayout>
父佈局設置可聚焦,Activity 啟動時焦點落在父佈局而非 EditText。
fun Activity.hideKeyboard() {
currentFocus?.let { view ->
val imm = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(view.windowToken, 0)
}
}