1. 程式人生 > >EditText屬性及一些常用用法

EditText屬性及一些常用用法

繼承關係:

class EditText extends TextView

android:inputType

在開發的過程中,通常會用到EditText,如何讓虛擬鍵盤來適應輸入框中內容的型別,通常我們都會在xml檔案中加入android:inputType=”“。

android:inputType="none"

android:inputType="text"

android:inputType="textCapCharacters"//前3個輸入普通字元

android:inputType="textCapWords"//單詞首字母大小

android:inputType="textCapSentences"
//僅第一個字母大小 android:inputType="textAutoCorrect"android:inputType="textAutoComplete"//前兩個自動完成 android:inputType="textMultiLine"//多行輸入 android:inputType="textImeMultiLine"//輸入法多行(不一定支援) android:inputType="textNoSuggestions"//不提示 android:inputType="textUri"//URI格式 android:inputType="textEmailAddress"//電子郵件地址格式 android:
inputType="textEmailSubject"//郵件主題格式 android:inputType="textShortMessage"//短訊息格式 android:inputType="textLongMessage"android:inputType="textPersonName"//人名格式 android:inputType="textPostalAddress"//郵政格式 android:inputType="textPassword"//密碼格式 android:inputType="textVisiblePassword"//密碼可見格式 android:inputType="textWebEditText"
//作為網頁表單的文字格式 android:inputType="textFilter"//文字篩選格式 android:inputType="textPhonetic"//拼音輸入格式 android:inputType="number"//數字格式 android:inputType="numberSigned"//有符號數字格式 android:inputType="numberDecimal"//可以帶小數點的浮點格式 android:inputType="phone"//撥號鍵盤 android:inputType="datetime"android:inputType="date"//日期鍵盤 android:inputType="time"//時間鍵盤

EditText是否自動彈出輸入法鍵盤

在開發過程中,我們經常會遇到Activity中包含EditText控制元件時會自動彈出虛擬鍵盤的情況,這是由於EditText自動獲得焦點的緣故,只要讓EditText失去焦點就行了,解決辦法如下:

1、在Manifest.xml檔案中相應的Activity下新增如下程式碼:
android:windowSoftInputMode="stateHidden"
2、讓EditText失去焦點,用EditText的clearFocus:
EditText edt = (EditText)findViewById(R.id.edt);
edt.clearFocus();
3、強制隱藏Android輸入法視窗:
EditText edt = (EditText)findViewById(R.id.edt);  
InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);  
imm.hideSoftInputFromWindow(edt.getWindowToken(), 0);
4、要求EditText始終不彈出虛擬鍵盤:
EditText edt = (EditText)findViewById(R.id.edt);  
edt.setInputType(InputType.TYPE_NULL);

但有時我們確實是想讓EditText自動獲得焦點並彈出軟鍵盤,在設定了EditText自動獲得焦點後,軟體盤不會彈出。
注意:此時是由於剛跳到一個新的介面,介面未載入完全而無法彈出軟鍵盤。此時應該適當的延遲彈出軟鍵盤,如500毫秒(保證介面的資料載入完成,如果500毫秒仍未彈出,則延長至1000毫秒)。

1、可以在EditText後面加上一段程式碼:

Timer timer = new Timer();  
timer.schedule(new TimerTask() {  
    public void run() {  
InputMethodManager inputManager = (InputMethodManager) editText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);  
inputManager.showSoftInput(editText, 0);  
    }  
}, 500);

2、給activity配置加入屬性:

android:windowSoftInputMode="adjustResize"

在EditText中軟鍵盤的調起、關閉

(1)EditText有焦點(focusable為true)阻止輸入法彈出

editText=(EditText)findViewById(R.id.txtBody);
   editText.setOnTouchListener(new OnTouchListener(){  
         public boolean onTouch(View v, MotionEvent event){ 
            editText.setInputType(InputType.TYPE_NULL); //關閉軟鍵盤     
            return false;
         }
    });

(2)當EidtText無焦點(focusable=false)時阻止輸入法彈出

InputMethodManager imm =
(InputMethodManager)getSystemService(INPUT_METHOD_SERVICE); 
 imm.hideSoftInputFromWindow(editText.getWindowToken(),0);

(3)呼叫數字鍵盤並設定輸入型別和鍵盤為英文

etNumber.setInputType(InputType.TYPE_CLASS_NUMBER); //呼叫數字鍵盤
rlEditText.setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);
//設定輸入型別和鍵盤為英文
android:inputType="textUri|textMultiLine"

(4)

android:focusable="false"//鍵盤永遠不會彈出
<activity 
android:name=".AddLinkman"
android:windowSoftInputMode="adjustUnspecified|stateHidden"/>//不自動彈出鍵盤
//關閉鍵盤(比如輸入結束後執行)
InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(etEditText.getWindowToken(), 0);
//自動彈出鍵盤
((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE)).toggleSoftInput(0,InputMethodManager.HIDE_NOT_ALWAYS);
etEditText.requestFocus();//讓EditText獲得焦點,但是獲得焦點並不會自動彈出鍵盤

有時候也要對intent的預設焦點進行設定,不至於在intent跳轉的時候預設焦點(游標)在EditText上,導致進入intent就開啟輸入法,影響介面美觀。
預設焦點的順序是:從上到下、從左到右第一個可以輸入的控制元件作為焦點。
可以讓別的控制元件獲取焦點:

button.setFocusable(true);
button.requestFocus();
button.setFocusableInTouchMode(true);

也可以:
在EditText前面放置一個看不到的或Editview的父佈局LinearLayout,讓他率先獲取焦點:

<LinearLayout
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="0px"
android:layout_height="0px"/>

EditText密碼顯示隱藏

XML檔案中:

Android:password="true" // 以”.”形式顯示密碼文字
android:inputType=”textPassword” //不可見密碼
android:inputType=”textVisiblePassword”//可見密碼

Java程式碼中

et.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
et.setTransformationMethod(PasswordTransformationMethod.getInstance());

例子如下:

//密碼是否隱藏
imgviewForgetPwEye.setOnClickListener(new View.OnClickListener() 

    @Override
    public void onClick(View v) {
        if (isshow) {
        //設定密碼為隱藏的

        editForgetPwUserPasswd.setTransformationMethod(PasswordTransformationMethod.getInstance());
        isshow = false;
        } else {  
        //設定EditText的密碼為可見的  
        editForgetPwUserPasswd.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
        isshow = true;
                }
            }
        });

EditText的屬性很多,這裡介紹一些:

android:hint="請輸入數字!"//設定顯示在空間上的提示資訊  
android:numeric="integer"//設定只能輸入整數,如果是小數則是:decimal  
android:singleLine="true"//設定單行輸入,一旦設定為true,則文字不會自動換行。  
android:password="true"//設定只能輸入密碼  
android:textColor = "#ff8c00"//字型顏色  
android:textStyle="bold"//字型,bold, italic, bolditalic  
android:textSize="20dip"//大小  
android:capitalize="characters"//以大寫字母寫,設定英文字母大寫型別。設定如下值:sentences僅第一個字母大寫;words每一個單詞首字母大小,用空格區分單詞;characters每一個英文字母都大寫。
android:textAlign="center"//EditText沒有這個屬性,但TextView有,居中  
android:textColorHighlight="#cccccc"//被選中文字的底色,預設為藍色  
android:textColorHint="#ffff00"//設定提示資訊文字的顏色,預設為灰色
android:textScaleX="1.5"//控制字與字之間的間距
android:typeface="monospace"//字型,normal, sans, serif, monospace  
android:background="@null"//背景,這裡沒有,指透明  
android:layout_weight="1"//權重,控制控制元件之間的地位,在控制控制元件顯示的大小時蠻有用的。  
android:textAppearance="?android:attr/textAppearanceLargeInverse"//文字外觀,這裡引用的是系統自帶的一個外觀,?表示系統是否有這種外觀,否則使用預設的外觀。 
android:layout_gravity="center_vertical"//設定控制元件顯示的位置:預設top,這裡居中顯示,還有bottom  
android:gray="top"//多行中指標在第一行第一位置
et.setSelection(et.length());//調整游標到最後一行  
android:autoText //自動拼寫幫助 
android:digits //設定只接受某些數字 
android:phoneNumber //輸入電話號碼  
android:editable //是否可編輯  
android:autoLink=”all” //設定文字超連結樣式當點選網址時,跳向該網址  
android:cursorVisible="false" //隱藏游標
android:background="#00000000"//不要文字框背景
android:textAppearance="?android:attr/textAppearanceLargeInverse"//文字外觀,這裡引用的是系統自帶的一個外觀,?表示系統是否有這種外觀,否則使用預設的外觀。不知道這樣理解對不對?   

屬性名稱描述  
android:autoLink//設定是否當文字為URL連結/email/電話號碼/map時,文字顯示為可點選的連結。可選值(none/web/email/phone/map/all)  
android:autoText//如果設定,將自動執行輸入值的拼寫糾正。此處無效果,在顯示輸入法並輸入的時候起作用。  
android:bufferType//指定getText()方式取得的文字類別。選項editable 類似於StringBuilder可追加字元,也就是說getText後可呼叫append方法設定文字內容。spannable 則可在給定的字元區域使用樣式,參見這裡1、這裡2android:capitalize//設定英文字母大寫型別。此處無效果,需要彈出輸入法才能看得到,參見EditView此屬性說明。  
android:cursorVisible//設定游標為顯示/隱藏,預設顯示。  
android:digits//設定允許輸入哪些字元。如“1234567890.+-*/% ()”  
android:drawableBottom//在text的下方輸出一個drawable,如圖片。如果指定一個顏色的話會把text的背景設為該顏色,並且同時和background使用時覆蓋後者。  
android:drawableLeft//在text的左邊輸出一個drawable,如圖片。  
android:drawablePadding//設定text與drawable(圖片)的間隔,與drawableLeft、drawableRight、drawableTop、drawableBottom一起使用,可設定為負數,單獨使用沒有效果。   
android:drawableRight//在text的右邊輸出一個drawable,如圖片。  
android:drawableTop//在text的正上方輸出一個drawable,如圖片。  
android:editable//設定是否可編輯。這裡無效果,參見EditView。  
android:editorExtras//設定文字的額外的輸入資料。在EditView再討論。  
android:ellipsize//設定當文字過長時,該控制元件該如何顯示。有如下值設定:”start”—?省略號顯示在開頭;”end”——省略號顯示在結尾;”middle”—-省略號顯示在中間;”marquee” ——以跑馬燈的方式顯示(動畫橫向移動)  
android:freezesText//設定儲存文字的內容以及游標的位置。參見:這裡。  
android:gravity//設定文字位置,如設定成“center”,文字將居中顯示。  
android:hintText//為空時顯示的文字提示資訊,可通過textColorHint設定提示資訊的顏色。此屬性在EditView中使用,但是這裡也可以用。  
android:imeOptions//附加功能,設定右下角IME動作與編輯框相關的動作,如actionDone右下角將顯示一個“完成”,而不設定預設是一個回車符號。這個在EditView中再詳細說明,此處無用。  
android:imeActionId//設定IME動作ID。在EditView再做說明,可以先看這篇帖子:這裡。  
android:imeActionLabel//設定IME動作標籤。在EditView再做說明。  
android:includeFontPadding//設定文字是否包含頂部和底部額外空白,預設為true。  
android:inputMethod//為文字指定輸入法,需要完全限定名(完整的包名)。例如:com.google.android.inputmethod.pinyin,但是這裡報錯找不到。  
android:inputType//設定文字的型別,用於幫助輸入法顯示合適的鍵盤型別。在EditView中再詳細說明,這裡無效果。  
android:linksClickable//設定連結是否點選連線,即使設定了autoLink。  
android:marqueeRepeatLimit//在ellipsize指定marquee的情況下,設定重複滾動的次數,當設定為marquee_forever時表示無限次。  
android:ems//設定TextView的寬度為N個字元的寬度。這裡測試為一個漢字字元寬度,如圖:  
android:maxEms//設定TextView的寬度為最長為N個字元的寬度。與ems同時使用時覆蓋ems選項。  
android:minEms//設定TextView的寬度為最短為N個字元的寬度。與ems同時使用時覆蓋ems選項。  
android:maxLength//限制顯示的文字長度,超出部分不顯示。  
android:lines//設定文字的行數,設定兩行就顯示兩行,即使第二行沒有資料。  
android:maxLines//設定文字的最大顯示行數,與width或者layout_width結合使用,超出部分自動換行,超出行數將不顯示。  
android:minLines//設定文字的最小行數,與lines類似。  
android:lineSpacing//Extra設定行間距。  
android:lineSpacingMultiplier//設定行間距的倍數。如”1.2android:numeric//如果被設定,該TextView有一個數字輸入法。此處無用,設定後唯一效果是TextView有點選效果,此屬性在EdtiView將詳細說明。  
android:password//以小點”.”顯示文字  
android:phoneNumber//設定為電話號碼的輸入方式。  
android:privateImeOptions//設定輸入法選項,此處無用,在EditText將進一步討論。  
android:scrollHorizontally//設定文字超出TextView的寬度的情況下,是否出現橫拉條。  
android:selectAllOnFocus//如果文字是可選擇的,讓他獲取焦點而不是將游標移動為文字的開始位置或者末尾位置。TextView中設定後無效果。  
android:shadowColor//指定文字陰影的顏色,需要與shadowRadius一起使用。效果:  
android:shadowDx//設定陰影橫向座標開始位置。  
android:shadowDy//設定陰影縱向座標開始位置。  
android:shadowRadius//設定陰影的半徑。設定為0.1就變成字型的顏色了,一般設定為3.0的效果比較好。  
android:singleLine//設定單行顯示。如果和layout_width一起使用,當文字不能全部顯示時,後面用“…”來表示。如android:text="test_ singleLine " android:singleLine="true" android:layout_width="20dp"將只顯示“t…”。如果不設定singleLine或者設定為false,文字將自動換行  
android:textStyle//設定字形[bold(粗體) 0, italic(斜體) 1, bolditalic(又粗又斜) 2] 可以設定一個或多個,用“|”隔開  
android:typeface//設定文字字型,必須是以下常量值之一:normal 0, sans 1, serif 2, monospace(等寬字型) 3]  
android:maxHeight//設定文字區域的最大高度  
android:minHeight//設定文字區域的最小高度  
android:maxWidth//設定文字區域的最大寬度  
android:minWidth//設定文字區域的最小寬度  
android:textAppearance//設定文字外觀。如“?android:attr/textAppearanceLargeInverse  
”這裡引用的是系統自帶的一個外觀,?表示系統是否有這種外觀,否則使用預設的外觀。可設定的值如下:textAppearanceButton/textAppearanceInverse/textAppearanceLarge/textAppearanceLargeInverse/textAppearanceMedium/textAppearanceMediumInverse/textAppearanceSmall/textAppearanceSmallInverse  
android:textAppearance設定文字外觀。如“?android:attr/textAppearanceLargeInverse  
”這裡引用的是系統自帶的一個外觀,?表示系統是否有這種外觀,否則使用預設的外觀。可設定的值如下:textAppearanceButton/textAppearanceInverse/textAppearanceLarge/textAppearanceLargeInverse/textAppearanceMedium/textAppearanceMediumInverse  

監聽EditText的變化

使用EditText的addTextChangedListener(TextWatcher watcher)方法對EditText實現監聽,TextWatcher是一個介面類,所以必須實現TextWatcher裡的抽象方法:
例子一:

text.addTextChangedListener(textWatcher);  

  private TextWatcher textWatcher = new TextWatcher() {  

        @Override    
        public void afterTextChanged(Editable s) {     
            // TODO Auto-generated method stub     
            Log.d("TAG","afterTextChanged--------------->");   
        }   

        @Override 
        public void beforeTextChanged(CharSequence s, int start, int count,  
                int after) {  
            // TODO Auto-generated method stub  
            Log.d("TAG","beforeTextChanged--------------->");  
        }  

         @Override    
        public void onTextChanged(CharSequence s, int start, int before,     
                int count) {     
            Log.d("TAG","onTextChanged--------------->");    
            str = text.getText().toString();  
            try {  
                //if ((heighText.getText().toString())!=null)   
                Integer.parseInt(str);  

            } catch (Exception e) {  
                // TODO: handle exception  
                showDialog();  
            }  

        }                    
    };  

    private void showDialog(){  
        AlertDialog dialog;  
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);  
        builder.setTitle("訊息").setIcon(android.R.drawable.stat_notify_error);  
        builder.setMessage("你輸出的整型數字有誤,請改正");  
        builder.setPositiveButton("確定", new DialogInterface.OnClickListener(){  
            @Override 
            public void onClick(DialogInterface dialog, int which) {  
                // TODO Auto-generated method stub  

            }                     
        });  
        dialog = builder.create();  
        dialog.show();  
    }

例子二:

et.addTextChangedListener(new TextWatcher() {  

            @Override 
            public void beforeTextChanged(CharSequence s, int start, int count,  
                    int after) {  
                tv.setText("還能輸入"+Rest_Length+"個字");              
            }  

            @Override 
            public void afterTextChanged(Editable s) {  
                tv.setText("還能輸入"+Rest_Length+"個字");  
            }  

            @Override 
            public void onTextChanged(CharSequence s, int start, int before, int count) {  
                if(Rest_Length>0){  
                    Rest_Length = MAX_LENGTH - et.getText().length();  
                }  
            }             
        });  

        clearBtn.setOnClickListener(new Button.OnClickListener() {        
            @Override 
            public void onClick(View v) {  
                et.setText("");  
                Rest_Length = MAX_LENGTH;  
            }  
        });  
    }

關於焦點:

et.setFocusable(true);
et.setFocusableInTouchMode(true);
et.requestFocus();

et.clearFocus();//失去焦點
et.requestFocus();//獲取焦點

EditText彈出軟鍵盤遮住輸入框問題

如果在Activity中的佈局的下方有EditText,獲取焦點彈出軟鍵盤的時候,如果不做處理,軟鍵盤可能會遮擋輸入框,使用者提現不好,網上也有很多人提出結局方案,這裡就分析一下解決的效果.

需要用到EditText的佈局大概分為兩種,一種是頁面顯示的內容不希望有殘缺,比如軟鍵盤把標題擠出了螢幕,如登入註冊搜尋等,EditText多半在頁面上半部分.另一種是頁面的上半部分不重要,比如聊天視窗,軟鍵盤彈出的時候,上半部分的聊天記錄可以被基礎螢幕外,EditText多半在最下方.其他的情況可以根據本文做出選擇,結果在最下面.

開始:

網上針對這個問題解決的方法大概這麼幾種:

1.修改AndroidManifest.xml檔案

2.在Activity中新增配置

3.在佈局檔案中新增ScrollView

1.修改AndroidManifest.xml檔案
在AndroidManifest.xml中對應的Activity配置:android:windowSoftInputMode=”stateVisible|adjustResize”

<activity
 android:name=".LoginActivity"
 //顯示軟鍵盤,並讓佈局壓縮          android:windowSoftInputMode="stateVisible|adjustResize"
android:screenOrientation="portrait">
</activity>

含義:該頁面在彈出軟鍵盤的同時螢幕內容被壓縮,以騰出軟鍵盤的空間.

解釋它們的含義:

stateUnspecified
//:介面沒有設定"android:windowSoftInputMode"時的狀態.這個狀態是彈出有EditText的介面時時不彈出軟鍵盤的,當EditText獲取焦點的時候彈出軟體盤
stateUnchanged
//:狀態不改變,意思就是和上一個介面相同,上一個介面彈出軟鍵盤,跳轉到這個介面時,軟鍵盤也是彈出狀態.
stateHidden
//:隱藏鍵盤,彈出這個介面的時候,不管上個介面是什麼狀態,這個介面的軟鍵盤都是隱藏的.
stateAlwaysHidden
//:一直隱藏(跟上面的區別未知,試不出來).
stateVisible
//:強制彈出軟鍵盤.跳轉到介面後,沒有EditText也彈出鍵盤.
stateAlwaysVisible
//:一直顯示鍵盤(同上).

這裡開始就是跟內容相關的了,也跟本文也相關

adjustUnspecified
//:算是預設方式.如果介面沒有被ScrowView包裹,鍵盤會擋住一部分內容,如果介面被ScrowView包裹了,會讓ScrowView中的內容滾動,以放下軟鍵盤.

adjustResize
//:主介面會縮放,用來放置軟鍵盤.

1

2

adjustPan
//:主介面不會縮放,會向上移來放置軟鍵盤

3

4

上面兩個不同的地方在於,如果內容是listview,當顯示最下面一個item後彈出軟鍵盤,adjustResize會讓listview下沿被軟鍵盤擋住,adjustPan則還是顯示最下面一個item.

2.在Activity中新增配置
在該Activity中的onCretae()的setContentView()方法前面新增:getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)

含義:把整個Layout頂上去露出獲得焦點的EditText,不壓縮多餘空間.

解釋他們的含義:

SOFT_INPUT_ADJUST_NOTHING
//: 不調整(輸入法完全直接覆蓋住,未開放此引數);
SOFT_INPUT_ADJUST_PAN
//:把整個Layout頂上去露出獲得焦點的EditText,不壓縮多餘空間
SOFT_INPUT_ADJUST_RESIZE
//: 整個Layout重新編排,重新分配多餘空間;
SOFT_INPUT_ADJUST_UNSPECIFIED
//: 系統自己根據內容自行選擇上兩種方式的一種執行(預設配置).

這裡SOFT_INPUT_ADJUST_RESIZE和SOFT_INPUT_ADJUST_PAN和上面中的adjustResize和adjustPan效果是一樣的.
@Overrideprotected
 void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //讓佈局向上移來顯示軟鍵盤
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
    setContentView(R.layout.activity_login);
    init();
}

3.在佈局檔案中新增ScrollView
ScrollView是能讓彈出的軟鍵盤新增到佈局的下面,從而不擋住部分佈局.這裡往往需要跟上面的adjustResize和adjustPan兩個狀態一起用.
佈局:

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="8"
    android:fillViewport="true">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <ListView
            android:id="@+id/lv"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1" />
        <EditText
            android:layout_width="match_parent"
            android:layout_height="50dp" />
    </LinearLayout>
</ScrollView>

向上移的方式 設定:

<activity
        android:name=".SecondActivity"
        android:windowSoftInputMode="adjustPan">
        </activity>

壓縮的方式 設定:

 <activity
        android:name=".SecondActivity"
        android:windowSoftInputMode="adjustResize"></activity>

結果:
只要彈出軟鍵盤會影響到佈局的情況,都用ScrollView把佈局包裹起來,被包裹的內容就是可能被縮放或擠出螢幕外的內容.然後根據EditText的位置判斷用adjustResize還是用adjustPan.
adjustResize是收縮,adjustPan是向上擠
個人推薦,登入註冊用adjustResize,聊天視窗用adjustPan

參考:

限制只能輸入指定的字元

andorid editext android:digits=”abcdefghijklmnopqrstuvwxyz”
用程式碼寫來控制規則

設定 android:digits 屬性即可
例如:
android:digits = “abcdef”
有兩種方法可以實現:
方法一:

EditText mEditText = (EditText)findViewById(R.id.MyEditText);
String digits = "abcdef";
mEditText.setKeyListener(DigitsKeyListener.getInstance(digits));   

方法二:

EditText mEditText = (EditText)findViewById(R.id.MyEditText);
InputFilter[] filters = new InputFilter[1];
filters[0] = new MyInputFilter("abcdef");
mEditText.setFilters(filters);

public class MyInputFilter  extends LoginFilter.UsernameFilterGeneric {
    private String mAllowedDigits;

    public PopInputFilter( String digits ) {
        mAllowedDigits = digits;
    }

    @Override
    public boolean isAllowed(char c) {
        if (mAllowedDigits.indexOf(c) != -1) {
            return true;
        }             
        return false;
    }
}