2012-10-30 4 views
3

나는 edittext와 하나의 버튼이있는 레이아웃을 가지고 있습니다. 이 버튼은 setEnabled (false)로 설정됩니다. 사용자가 edittext에서 텍스트를 쓸 때 그의 상태를 어떻게 바꿀 수 있습니까? 나는 사용자가 텍스트를 편집하기 위해 텍스트를 넣을 때 setEnabled를 true로 설정하려고할까요?editText에서 글을 쓸 때 버튼을 활성화하십시오. android

답변

6

당신은 TextWatcher를 사용해야합니다 :

editText.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 

       // TODO Auto-generated method stub 
      } 

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

       // TODO Auto-generated method stub 
      } 

      @Override 
      public void afterTextChanged(Editable s) { 

       // TODO Auto-generated method stub 
      } 
     }); 
2

그것의 좋은 아이디어를 버튼이 비활성화 된 이유 또한 사용자 을 통지 할 수 있습니다.

사용하십시오 TextWatcher가/해제 버튼을 활성화하고 또한 글고 치기에 대한 오류 힌트 설정 : 코드 및 요구 사항과 관련하여

mEditText.addTextChangedListener(new EmptyValidator());

private class EmptyValidator implements TextWatcher { 

     @Override 
     public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 
     } 

     @Override 
     public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 
     } 

     @Override 
     public void afterTextChanged(Editable editable) { 
      if (editable.length() == 0) { 
       mEditText.setError("Required"); 
       mButton.setEnabled(false); 
      } else { 
       mEditText.setError(null); 
       mButton.setEnabled(true); 
      } 
     } 

    } 
1

를, 아래의 코드는 잘 작동합니다 :

mEditText.addTextChangedListener(new TextWatcher() { 
    @Override 
    public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {} 
    @Override 
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {} 

    @Override 
    public void afterTextChanged(Editable string) { 
     if(string.length() > 0) { 
      mButton.setEnabled(true); 
     } else { 
      mButton.setEnabled(false); 
     } 
    } 
}); 
1

편집 텍스 트의 현재 길이를 확인하고 TextWatcher 에서 얻은 정보를 확인해야합니다. Edi tText의 최소 길이는 1 (1) 또는 null이 아닌 다음 setEnabled (true); 그렇지 않은 경우는 false.

검사 조건 :

editText.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 

       // TODO Auto-generated method stub 
      } 

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

       // TODO Auto-generated method stub 
      } 

      @Override 
      public void afterTextChanged(Editable s) { 

       // TODO Auto-generated method stub 
      if(edt.getText().toString().length()<=0) 
       { 
      edt.setError("Required."); 
      btn.setEnable(true); 
       } 

     else 
     { 
     btn.setEnable(true); 
     } 


      } 
     }); 
관련 문제