代碼,這種方法并不是禁用軟鍵盤,就是不讓軟鍵盤改變頁面布局,效果上就像是禁用了軟鍵盤。用于防止系統(tǒng)自動(dòng)調(diào)整窗口布局。
如果沒有添加此標(biāo)志,則輸入法彈出時(shí),系統(tǒng)自動(dòng)平移或縮放窗口,確保輸入框可見。
如果沒有添加此標(biāo)志,則輸入法彈出時(shí),系統(tǒng)自動(dòng)平移或縮放窗口,確保輸入框可見。
//FLAG_ALT_FOCUSABLE_IM(Alternative Focusable IM)的作用是改變窗口在輸入法彈出時(shí)的焦點(diǎn)管理邏輯。 //當(dāng)輸入法(如軟鍵盤)顯示時(shí),系統(tǒng)默認(rèn)會(huì)調(diào)整窗口布局(如平移或縮放),以確保輸入框可見。此標(biāo)志允許窗口在輸入法顯示時(shí)保持原有焦點(diǎn)狀態(tài),避免意外的布局調(diào)整。 getWindow().addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
恢復(fù)默認(rèn)行為,移除標(biāo)志即可:getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
AndroidManifest.xml中配置 android:windowSoftInputMode="adjustUnspecified|stateAlwaysHidden" 測試發(fā)現(xiàn)不配置也可以
<activity android:name=".MainActivity" android:exported="true" android:configChanges="orientation|screenSize|keyboard|navigation" android:windowSoftInputMode="adjustUnspecified|stateAlwaysHidden"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <meta-data android:name="android.app.lib_name" android:value="" /> </activity>
手動(dòng)關(guān)閉軟鍵盤
//獲取當(dāng)前焦點(diǎn)View View v = getCurrentFocus(); //操作軟鍵盤的對象 InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); //縮回軟鍵盤 imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
手動(dòng)打開軟鍵盤
//設(shè)置輸入類型:文本 txtName.setInputType(InputType.TYPE_CLASS_TEXT); //開啟當(dāng)前焦點(diǎn)的鍵盤 View view = curAct.getCurrentFocus(); if (view != null) { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInputFromWindow(view.getWindowToken(), InputMethodManager.SHOW_IMPLICIT, InputMethodManager.HIDE_IMPLICIT_ONLY); } // 獲取 InputMethodManager 并顯示鍵盤 InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); if (imm != null) { imm.showSoftInput(txtName, InputMethodManager.SHOW_IMPLICIT); }
浙公網(wǎng)安備 33010602011771號