내가하고 싶은 것은 그 내용의 타당성을 반영하여 EditText의 상태 (정말로 배경)를 바꾸는 것이다. 예 : 사용자가 999를 문맥 상 올바르지 않은 999를 입력하면 EditText는 기본 주황색 테두리 대신 빨간색 테두리를 가져야하며 텍스트가 유효하면 녹색 테두리가 있어야합니다.Android :보기/드로어 블 맞춤 스타일이 가능합니까?
방법은 내가 탐구했습니다
- 프로그래밍 editor.setStyle (R.styles.SomeID) 같은 것을 통해 글고의 스타일을 변경. 안드로이드에서 불가능한 것 같습니다.
- R.attr에 사용자 지정 상태 (state_valid, state_invalid)를 추가하고이를 적색/녹색 9 패치와 연결 한 다음 이들 상태 중 하나와 함께 drawable.setState()를 호출합니다. 이것은 getState()를 통해 상태를 다시 읽을 수 있지만 테두리가 색상을 변경하지 않는다는 의미에서 효과가있었습니다.
- 유효성을 감지하면 백그라운드 자원을 직접 설정합니다. 이것은 올바른 시각 효과를 유발하지만 괜찮습니다. 조금 혼란스럽고 한 상태 만 허용합니다 (예 : EditText를 눌렀는지 여부를 수동으로 확인해야합니다).
제한된 UI 부동산을 감안할 때 사용자에게 텍스트의 유효성을 시각적으로 피드백하기 위해 별도의 UI 요소를 도입하는 것이 주저하므로 EditText 자체에 표시하고자합니다.
그럼 ... 실현 가능한 것입니까? 상당히 일반적인 사용 사례 인 것처럼 보이므로 누구나 내가 간단하고 우아한 방식으로 수행하려고 노력하고 있습니까?
감사합니다. 세 번째 접근 방식의 문제점은 각 상태 또는 조합을 확인하기 위해 일련의 작업을 수행해야한다는 것입니다. EditText가 눌려 졌을 때 유효하거나 유효하지 않거나 불가능한 경우 등등. 정확한 배경을 표시하기 위해 서브 클래스가 가능한 조합을 확인해야합니다. DRY를 위반하는 것은 말할 것도없고, 이것은 깔끔하고 세련되지 않은 것처럼 보입니다. – Simon