如果EditText中的單詞少於3個單詞,並且EditText中的單詞超過3個單詞,我想通過按鈕禁用按鈕,它可以獲得點擊。根據Android中的EditText中的文本啓用和禁用Button
任何人都可以幫助我嗎?
如果EditText中的單詞少於3個單詞,並且EditText中的單詞超過3個單詞,我想通過按鈕禁用按鈕,它可以獲得點擊。根據Android中的EditText中的文本啓用和禁用Button
任何人都可以幫助我嗎?
你必須addTextChangedListener
您EditText
像這樣:
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);
}
希望它能幫助。
單獨使用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
}
你可以做什麼@Udaykiran說,但使用arg0.length()
而是這裏面的方法。
的Editable
還包含改變
的
TextEditor
的內容,我認爲enableSubmitIfReady()的長度應該在onTextChanged – rohit很好的回答,除了我喜歡看這一類的if-else模式簡化成:' yourbutton.setEnabled(isReady);' – mharper
如何在不參考按鈕的情況下工作?你有一行yourbutton ...但你的按鈕在這個代碼的任何地方都沒有參考,所以它如何工作? –