2009-11-03 55 views

回答

0

有一個構造函數可以讓你指定字段的樣式。然後,您可以將所需的樣式或「FILTER_UPPERCASE」組合在一起FILTER_LOWERCASE | FILTER_NUMERIC。

或者,您可以調用setFilter並創建您自己的TextFilter的子類,它允許您通過覆蓋convert和validate方法來指定所需的確切行爲。轉換允許你強制某些東西,比如自動將所有文本輸入爲大寫等。驗證允許你阻止輸入某些東西,例如特殊字符。查看API獲取更多信息。

+0

喜戴夫,我試圖「FILTER_UPPERCASE | FILTER_LOWERCASE | FILTER_NUMERIC」這一項,但我考慮的第一個過濾器只ex.in上面的樣式烏爾給出大寫,小寫和numeric.But過濾器只只接受大寫。 – Kumar 2009-11-04 06:35:08

3

也許這是不可能的,那樣的話,我沒有嘗試過。每當我在我的代碼中使用過濾器時,我總是以我上面提到的第二種方式完成它。這有點複雜,但可以讓您更多地控制該領域可以接受和不能接受的內容。查看TextFilter類的API文檔。正如我上面所說,你只需要實現轉換和驗證方法。我認爲在你的情況下,你不需要做任何轉換。但在驗證方法中,您只需檢查字符是否在範圍a-z A-Z或0-9中。如果它返回true,否則返回false。這將停止所有不需要的字符出現在字段中。

6

我用這些方法:TextFilter#getBasicEditField#setFilter

mEdit = new EditField(); 
mEdit.setFilter(TextFilter.get(TextFilter.NUMERIC)); 

// Numeric filter that also allows minus sign. 
mEdit.setFilter(TextFilter.get(TextFilter.INTEGER)); 

我想通過覆蓋TextFilter能解決更困難的任務過濾創建自己的過濾器。

3

對於BasicEditField,這不易實現;但是,正確的解決方案將使用AutoTextEditField更改BasicEditField。創建AutoTextEditField時,使用可以傳入參數的構造函數。這應該爲你做。

new AutoTextEditField("My label:", "initial value", 1024, 50, 
         TextFilter.LOWERCASE | TextFilter.NUMERIC); 
+0

-1:有關AutoTextEditField的此信息與有關BasicEditField的原始問題無關。 – 2012-11-06 05:58:28

+0

使用BasicEditField這很容易理解,這並不容易(如果可以的話)實現;但是,正確的解決方案將使用AutoTextEditField更改BasicEditField。 因此,使用不同的字段。 – Hrvoje 2014-03-04 14:21:57

+0

那麼,除非你編輯你的答案 - 所以我不能改變投票。 – 2014-03-05 02:42:19

1

mEdit.setFilter(TextFilter.get(TextFilter.NUMERIC));工作正常,而且,我認爲,它沒有減號,就像測試中不能插入「 - 」字段中的減號一樣。

-1

庫馬爾我也面臨着同樣的問題,用下面的代碼來修復它 -

下面的腳本將允許大寫,小寫,僅數值。

setFilter(new TextFilter() { 
     public boolean validate(char c) { 
      return (Character.isDigit(c) || Character.isLowerCase(c) || Character.isUpperCase(c)); 
     } 
     public char convert(char c, int status) { 
      return c; 
     }} 
+0

setFilter在這個地方不適合。 – Hrvoje 2016-12-10 21:58:14

相關問題