2011-04-14 123 views
0

我在我的自定義對話框中有2個editfields,它是從ACtivity調用的,其中1個是「trxtPassword」和其他「text」類型。鍵盤不會出現在「文本」類型的編輯框中,而是出現在「textPassword」編輯文本中,然後不會執行。隱藏鍵盤密碼字段Android

我嘗試以下,但沒有任何工程:

InputMethodManager inputManager = (InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE); 
inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 

      //inputManager.hideSoftInputFromWindow(txt_username.getWindowToken(), 0);  
     //inputManager.hideSoftInputFromWindow(txt_password.getWindowToken(), 0); 

如果我讓txt_password.setInputType(0);那麼其他人可以很容易地看到密碼,這樣就不能使用。

還有什麼可以實現的目標?我沒有套住onLostFocus上的txt

txt_password.setOnFocusChangeListener(new View.OnFocusChangeListener() {    
     @Override 
     public void onFocusChange(View v, boolean hasFocus) { 
      if (hasFocus == false) { 
       InputMethodManager inputManager = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);  
       inputManager.hideSoftInputFromWindow(LoginDialog.this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY); 
      } 
     } 
    }); 

但不幸的是,一旦進入,如果我點擊任何地方或任何複選框,然後還重點不是從txt_password場丟失。只有當我點擊另一個editText然後onFocusChange事件被觸發並拋出錯誤並且應用程序關閉時,纔會丟失這些信息。

任何想法如何做到這一點?

+0

只是爲了澄清: 是您的目標是,讓使鍵盤不會出現? 或者你是否試圖在完成之後關閉鍵盤? – HaemEternal 2011-04-14 15:28:24

+0

我試圖反駁他的鍵盤,一旦我點擊密碼文本字段外的任何地方。 – Tvd 2011-04-14 15:52:42

+0

用戶在輸入密碼後,是否不適合單擊鍵盤上的「完成」按鈕以關閉鍵盤? (例如setImeOptions(EditorInfo.IME_ACTION_DONE);) – HaemEternal 2011-04-18 08:28:13

回答

0

用它來保持鍵盤隱藏在活動開始

<activity 
    android:name=".views.DrugstoreEditView" 
    android:windowSoftInputMode="stateHidden"></activity> 

而且有一個有用的答案:How to hide soft keyboard on android after clicking outside EditText?

+0

謝謝dziobas,但這沒有什麼區別。當焦點位於密碼文本字段時,我仍然得到鍵盤。 – Tvd 2011-04-14 15:22:24

+0

請澄清你的問題。你想隱藏鍵盤嗎? – pawelzieba 2011-04-14 15:32:22

+0

我只想將它完全隱藏起來,但是如果所有用戶都想要,並且它出現了,那麼一旦用戶單擊edittext外的其他任何地方,鍵盤應該會消失。 – Tvd 2011-04-14 15:54:27