Android:焦點在EditText上時自動顯示軟鍵盤

我正在使用AlertDialog顯示一個輸入框。 當我調用AlertDialog.show() ,對話框內部的EditText會自動聚焦,但軟鍵盤不會自動顯示。 android

如何在顯示對話框時自動顯示軟鍵盤? (而且沒有物理/硬件鍵盤)。 與按下「搜索」按鈕調用全局搜索的方式相似,將自動顯示軟鍵盤。 ide


#1樓

若是有人獲得: ui

沒法從類型Activity對靜態方法getSystemService(String)進行靜態引用 spa

嘗試向getSystemService調用添加上下文code

因此 對象

InputMethodManager imm = 
(InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);

#2樓

是的,你能夠用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);
        }
    }
});

#3樓

用於顯示鍵盤用途: 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);

#4樓

讓我指出一些額外的信息到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);
      }
   }
});

#5樓

<activity
    ...
    android:windowSoftInputMode="stateVisible" >
</activity>

要麼

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
相關文章
相關標籤/搜索