2016-01-08 25 views
1

我想在用戶點擊EditText時首次禁用軟鍵盤上的數字0鍵。第一次在軟鍵盤上禁用0鍵

EditText有一個input typenumber我必須輸入一個十位電話號碼,其中第一個數字不應該爲零。

請問我該如何做到這一點?

+0

Y是一切以粗體順便說一句?反正,你可以找出天氣0點擊與否。因此,如果0 cliked然後不要做任何工作在那裏。 –

+1

我不認爲你可以禁用0,但你可以檢查,如果第一個輸入是零設置編輯文本空白通過使用文本觀察器 – justDroid

+0

你必須把驗證沒有限制,所以不要這樣做 –

回答

1
boolean changing = false; 

    EditText edit = (EditText)findViewById(R.id.medittext); 
    edit.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void afterTextChanged(Editable s) { 
      if (!changing && edit.getText().toString().startWith("0")){ 
       changing = true; 
       edit.setText(edit.getText().toString().replace("0", "")); 
      } 
      changing = false; 
     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
     } 

    }); 
+0

Thanx很多它的工作! –

+0

if if end爲什麼你設置change = false請問你能解釋一下嗎? –

+0

'changing'標誌是爲了避免'if(...)block'在我們調用'edit.setText()'時再次處理。標誌會導致無限循環。 – datalost

0

可使用在 「onTextChanged」 你的 「0」 操作。使用此代碼:

if(arg0.length()>0){ 
    if(arg0.charAt(0)=='0'){ 
     your_edittext.setText(""); 
    } 
} 
0

的EditText編輯=(EditText上)findViewById(R.id.medittext); edit.addTextChangedListener(新TextWatcher(){

 @Override 
     public void afterTextChanged(Editable s) { 
      String input = editable.toString(); 
      if (input.length() > 0 && input.charAt(0) == '0') { 
       editable.replace(0, 1, ""); 
      } 
     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
     } 

    });