2010-04-06 100 views
160

我們如何以編程方式設置EditText的輸入類型?我試圖:爲EditText設置inputType?

mEdit.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD); 

它似乎沒有任何效果。

回答

182

根據TextView docs,android:password的編程版本是setTransformationMethod(),而不是setInputType()。所以像這樣的東西:

mEdit.setTransformationMethod(PasswordTransformationMethod.getInstance()); 

應該做的伎倆。

+3

爲了增加這一點,你需要調用setTransformationMethod *來代替setInputType。在setTransformationMethod之後調用setInputType將導致EditText不再處於密碼模式。 – 2013-03-20 02:01:34

+9

這個答案對於被問到的問題是錯誤的。這隻會轉換在「EditText」中輸入的文本(用密碼點替換字符)。這對於允許在「EditText」本身中輸入的內容沒有任何影響。 – slinden77 2013-05-24 18:21:45

+3

setInputType最終會從內部調用setTransformationMethod,所以如果您將TYPE_TEXT_VARIATION_PASSWORD傳遞給setInputType,它將爲您執行此操作。這個問題似乎在調用setSingleLine之後會調用setInputType,它將使用null或單線變換器調用setTransformationMethod,從而清除密碼轉換器。 – sparkym3 2015-01-30 19:05:38

-1

嘗試在佈局添加該到的EditText/TextView的標籤

android:password="true" 

編輯:我剛剛重新看了你的帖子,也許你需要施工後要做到這一點。我不明白爲什麼你的代碼片段不起作用。

+0

在這種情況下,我沒有佈局文件,這些字段是以編程方式生成的。 – user246114 2010-04-06 16:24:24

+0

是的,它是建設後,不知道爲什麼它不工作! – user246114 2010-04-06 18:55:44

+5

此選項現已棄用! – swiftBoy 2012-05-30 13:45:38

332

要以編程方式設置EditText的輸入類型,您必須指定輸入類類型爲文本。

editPass.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); 
+2

您的提示對我來說非常合適!我有類似的問題,編程設置輸入類型爲多行。 – MissPiplup 2012-05-12 08:44:09

+5

+1 ed。這是簡單的答案這應該被標記爲答案。 – 2012-07-10 04:53:17

+0

偉大的小費。謝謝 – Mariam 2012-10-03 11:51:19

13

,只允許數字:

password1.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_CLASS_NUMBER); 

要變換(隱藏)密碼:

password1.setTransformationMethod(PasswordTransformationMethod.getInstance()); 
23

我已經解決了所有與

.setInputType(InputType.TYPE_CLASS_NUMBER); 

爲看不清數據和

.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD); 

爲見點(如果該數據是一個數字,它不選擇其他車類)

+0

作爲魅力工作。 – 2018-01-11 13:14:56

7
editText.setInputType(EditorInfo.TYPE_CLASS_NUMBER); 

//你可以根據自己的需求改變TYPE _...。

0

我知道預期的答案是在Java。但這裏是我的2建議美分總是試圖處理視圖相關的東西在XML(ATLEAST基本的東西),所以我建議還是用一個xml屬性,而不是在java

<EditText 
    android:inputType="textPassword"/> 
+2

在某些情況下,您可能想要在不同的輸入類型之間切換,例如隱藏/顯示在字段中輸入的密碼;這是什麼讓我到這個頁面 – William 2017-09-13 10:11:37

+1

,但爲此,EditText中有一個選項,讓你顯示/隱藏密碼,不需要你自己做,也可以給它一個很好的動畫。 – 2017-09-13 10:21:36

+0

感謝您的信息,我在這裏看到它https://stackoverflow.com/a/41163578/3310235 – William 2017-09-13 10:38:54

0

這可能是幫助處理這個用例給像我這樣想要在密碼和自由文本模式之間切換的人。我嘗試使用建議的輸入法,但它只能在一個方向上工作。我可以從密碼到文本,但後來我無法恢復。對於那些試圖處理切換(例如顯示密碼複選框)使用

 @Override 
     public void onClick(View v) 
     { 
      if(check.isChecked()) 
      { 
       edit.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); 
       Log.i(TAG, "Show password"); 
      } 
      else 
      { 
       edit.setTransformationMethod(PasswordTransformationMethod.getInstance()); 
       Log.i(TAG, "Hide password"); 
      } 
     } 

我不得不歸功於this的解決方案。希望我幾個小時前找到了!

相關問題