2011-11-24 2 views
4

텍스트가 비어있을 때 버튼을 비활성화하고자합니다 (세로 모드로 설정된 방법). 아이디어가 있습니까?imeOption = actionSend를 사용할 때 EditText가 비어있을 때 보내기 버튼을 비활성화하십시오.

편집 : 명확하지 않다고 생각하지만 내 버튼을 사용/사용 중지 할 수 있습니다. 그러나 가로 모드를 사용할 때 키보드가 튀어 나오면 화면이 자신의 Android 전용 텍스트 영역으로 덮여 있습니다. 버튼 (따라서 imeOption) 그래서 나는 가지고있는 버튼을 활성화/비활성화하는 데 문제가 없습니다. 텍스트 영역이 비어있을 때 비활성화하려는 안드로이드 버튼입니다.

+0

당신이이 OS 렌더링 버튼의 .. 가시성 View.INVISIBLE를 설정하고 난이 보내기 버튼의 핸들을 얻는 방법 –

+0

이 필요한 경우 onconfigurationChange 다시 그 상태를 설정 오버라이드 (override)하는 수 있습니다 .. 그 화면이 외부 생각 내 활동 범위의 .. –

+0

http://stackoverflow.com/questions/2979441/android-how-to-enable-my-button-back-if-edittext-is-not-empty – Synxmax

답변

12

TextChangedListener을 추가하면 EditText 내부의 텍스트가 변경 될 때마다 호출됩니다.

message.addTextChangedListener(new TextWatcher() { 

    public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 
    public void onTextChanged(CharSequence s, int start, int before, int count) {} 

    public void afterTextChanged(Editable s) { 
     if (s == null || s.length() == 0) { 
      send.setEnabled(false); 
      message.setImeOptions(EditorInfo.IME_FLAG_NO_ENTER_ACTION); 
     } 
     else { 
      send.setEnabled(true); 
      message.setImeOptions(/* whatever you previously had */); 
     } 
} 

또는, 당신은 또한 당신의 클래스가 코드를 조금 청소기하게 TextWatcher 인터페이스를 구현하도록 할 수 있습니다.

public class MyDialogFragment implements TextWatcher { ... } 
+0

이봐 요, 웬일인지이게 작동하지 않았지만 좀 옳은 길로 나를 인도 해주었습니다 .. 그 송신을 위해 어떤 조치가 취해 졌는지 보았습니다. 버튼을 클릭하고 텍스트 필드가 비어 있으면 기본적으로 아무 것도하지 않았습니다. –

+0

그렇게해야 할 것 같습니다. mehow가 ime 옵션이 영향을 주도록 키보드를 새로 고침 (hide & show?). 또 다른 좋은 팁은 문자열의 임시 복사본에서 trim()을 호출 (또는 공백을 제거하는 regax를 사용) 한 다음 길이를 확인하는 것입니다. 공백 만있는 메시지를 보내지 않도록하십시오. – FunkTheMonk

+0

@FunkTheMonk까지 당신의 대답을 이해한다면,'afterTextChanged()'를 사용하여 소프트 키 보드의'DONE' 버튼을 보이거나 숨길 수 있습니다. 권리? 나는 또한 성공하지 않고'NEXT' 버튼을 비활성화/활성화하려고했습니다. 어떻게 할거 니? – JJD