2011-11-22 59 views

回答

30

你必須addTextChangedListenerEditText

像這樣:

yourEditText.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void afterTextChanged(Editable arg0) { 
     enableSubmitIfReady(); 
     } 

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

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

在該方法中,你應該這樣做:

public void enableSubmitIfReady() { 

    boolean isReady = yourEditText.getText().toString().length() > 3;  
    yourbutton.setEnabled(isReady); 
    } 

希望它能幫助。

+1

TextEditor的內容,我認爲enableSubmitIfReady()的長度應該在onTextChanged – rohit

+2

很好的回答,除了我喜歡看這一類的if-else模式簡化成:' yourbutton.setEnabled(isReady);' – mharper

+0

如何在不參考按鈕的情況下工作?你有一行yourbutton ...但你的按鈕在這個代碼的任何地方都沒有參考,所以它如何工作? –

1

單獨使用afterTextChanged的問題是在應用程序啓動時,它不能禁用按鈕,直到您開始鍵入您的EditText。

這是我如何實施我的,它的工作原理。打電話給你活動的onCreate方法

void watcher(final EditText message_body,final Button Send) 
{ 
    final TextView txt = (TextView) findViewById(R.id.txtCounter); 
    message_body.addTextChangedListener(new TextWatcher() 
    { 
     public void afterTextChanged(Editable s) 
     { 
      txt.setText(message_body.length() + "/160"); //This is my textwatcher to update character left in my EditText 
      if(message_body.length() == 0) 
       Send.setEnabled(false); //disable send button if no text entered 
      else 
       Send.setEnabled(true); //otherwise enable 

     } 
     public void beforeTextChanged(CharSequence s, int start, int count, int after){ 
     } 
     public void onTextChanged(CharSequence s, int start, int before, int count){ 
     } 
    }); 
    if(message_body.length() == 0) Send.setEnabled(false);//disable at app start 
} 
1

你可以做什麼@Udaykiran說,但使用arg0.length()而是這裏面的方法。

Editable還包含改變