我想通过按钮禁用,如果在的EditText的话不到3个字,如果在EditText上的话都超过3个字,然后我想启用它,使它能获得点击。
有人能帮我一下吗?
你必须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
内容的长度
这是Data-Binding非常容易。您可以根据在的EditText XML直接处理按钮状态。
android:enabled="@{etName.text.length() > 5 && etPassword.text.length() > 5}"
&
是HTML entity,该名称表示&
。etName
&etPassword
对应的名称和密码的EditText IDS。示例XML -
<LinearLayout
>
<EditText
android:id="@+id/etName"
/>
<EditText
android:id="@+id/etPassword"
/>
<Button
android:enabled="@{etName.text.length() > 5 && etPassword.text.length() > 5}"
/>
</LinearLayout>