【发布时间】:2012-01-03 17:52:37
【问题描述】:
如果 EditText 中的单词少于 3 个单词,我想通过 Button 禁用,如果 EditText 中的单词超过 3 个单词,那么我想启用它以便它可以被点击。
有人可以帮我吗?
【问题讨论】:
标签: android button android-edittext
如果 EditText 中的单词少于 3 个单词,我想通过 Button 禁用,如果 EditText 中的单词超过 3 个单词,那么我想启用它以便它可以被点击。
有人可以帮我吗?
【问题讨论】:
标签: android button android-edittext
你必须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);
}
希望对你有帮助。
【讨论】:
yourbutton.setEnabled(isReady);
enableSubmitIfReady() 移动到onTextChanged() 并将yourEditText.getText().toString().length() 替换为s.length() 来稍微简化此操作。看here
单独使用 afterTextChanged 的问题是在应用程序启动时,它最初无法禁用按钮,直到您开始输入 EditText。
这就是我实现我的方式并且效果很好。在 Activity 的 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 内容的长度
【讨论】: