如果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 ...但你的按钮在这个代码的任何地方都没有参考,所以它如何工作? –