我正在使用AlertDialog
顯示一個輸入框。 當我調用AlertDialog.show()
,對話框內部的EditText
會自動聚焦,但軟鍵盤不會自動顯示。 android
如何在顯示對話框時自動顯示軟鍵盤? (而且沒有物理/硬件鍵盤)。 與按下「搜索」按鈕調用全局搜索的方式相似,將自動顯示軟鍵盤。 ide
若是有人獲得: ui
沒法從類型Activity對靜態方法getSystemService(String)進行靜態引用 spa
嘗試向getSystemService調用添加上下文 。 code
因此 對象
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
是的,你能夠用setOnFocusChangeListener
來幫助你。 get
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); } } });
用於顯示鍵盤用途: input
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
隱藏鍵盤使用: it
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(view.getWindowToken(),0);
讓我指出一些額外的信息到yuku的解決方案,由於我發現很難讓這個工做! 如何從AlertDialog.Builder獲取AlertDialog對象? 好吧,這是個人alert.show()
執行的結果: List
final AlertDialog.Builder alert = new AlertDialog.Builder(getActivity()); final EditText input = new EditText(getActivity()); alert.setView(input); // do what you need, like setting positive and negative buttons... final AlertDialog dialog = alert.show(); input.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if(hasFocus) { dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); } } });
<activity ... android:windowSoftInputMode="stateVisible" > </activity>
要麼
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);