내 응용 프로그램에서는 GMail 앱 UI의 레이블과 모양이 비슷합니다. 알지 못하는 사람들은 다음과 같이 보입니다 (레이블은 이러한 화려한 막대입니다) : 추가, 수직 안쪽 여백이있는 BackgroundColorSpan
비슷한 효과를 얻으려면 각 패치마다 드로어 블을 사용합니다. 각 라벨에 대해 TextView를 만들고 드로어 블을 할당합니다 . 이것은 간단한 해결책이지만, 나는 그것을 좋아하지 않는다. 그것은 우아하지 않다, 그것은 프로파일 러에 의해 보여지는 것처럼 아주 느리다. 그리고 나는 그것이 그것을하는 올바른 방법이라고 생각하지 않는다.
UI의 디자인을 "ICS-y"로 변경하여 레이블에서 둥근 모서리를 제거했습니다. 그리고 어떻게 9 패치 솔루션을 대체 할 수 있을지 생각하기 시작했습니다. 가장 확실한 것은 BackgroundColorSpan을 사용하는 것입니다. 하지만 하나의 작은 단점이 있습니다. 내 레이블에 약간의 패딩이 있어야합니다. 드로어 블을 사용하면 쉽게 달성 할 수있었습니다. 스팬을 사용하면 힘들어집니다. 가로 채우기를 만들기 위해 문자열의 처음과 끝에 공백을 추가 할 수 있습니다. 하지만 수직 패딩을 더 크게 만드는 방법은 무엇입니까? 물건을 지우려면이 BackgroundColorSpan와 라벨의 스크린 샷입니다 :
내가 색 부분 위에 큰 텍스트 아래 만들고 싶어. 어떤 종류의 MetricAffectingSpan을 사용해야한다고 생각하지만 어느 것이지 파악할 수 없었습니다. 아니면 내 자신을 써야 하나? 아니면, 마지막으로, 아마 나의 필요를 충족시킬 수없는 스팬일지도 모르겠다. 나는 이미지를 유지하거나 캔버스를 만들고 GMail 앱 에서처럼 "수동으로"모든 것을 그려야한다.
+1 도형의 경우 도형을 결합하여 그림자를 추가하는 등의 고급 작업을 수행 할 수도 있습니다. – Guillaume
감사! 이미지보다 확실히 개선 된 기능입니다. 그러나 Spans를 사용하면 하나의 TextView에 두 개 이상의 레이블을 표시 할 수 있습니다. 모양이 틀리면 틀린 부분을 수정하십시오. 쉽게 수행 할 수 없습니까? – user1234567
도형을 도형과 똑같이 사용할 수 있기 때문에 이것은 정확합니다. – poitroae