2011-11-10 7 views
24

끝 부분에 줄임표 (...)를 프로그래밍 방식으로 작성하고 있습니다.줄임표로 TextView를 프로그래밍 방식으로 작성하십시오.

의사 코드 :

tv.setEllipsize(TextUtils.TruncateAt.END); 
    tv.setHorizontallyScrolling(false); 
    tv.setSingleLine(); 

위의 작품 GREAT.

tv.setEllipsize(TextUtils.TruncateAt.END); 
    tv.setHorizontallyScrolling(false); 
    tv.setMaxLines(1); 

이것은 작동하지 않습니다. 이거 버그 야? maxLines, 특히 maxLine을 1로 지정할 때 끝에 타원으로 텍스트를 가져올 수없는 이유를 모르지만 setSingleLine은 괜찮습니다.

답변

45

setSingleLine() 또는 setSingleLine(true)은 TextView가 줄을 더 많이 바꾸지 못하도록하고 TextView가 줄 바꿈을 무시하도록합니다 (문자열의 \n 기호).

setMaxLines(int n)은 줄 바꿈으로 구분 된 TextView에 표시되는 문자열의 처음 n 줄을 표시합니다. 문자열은 "내 첫 번째 라인 \ n을 내 두 번째 라인 \ n을 제 3 일"

  • setSingleLine()하자 예를 들어

    는 텍스트 뷰에 표시 할 수 있습니다 "내 첫 번째 라인을 내 .."디스플레이부터 폭을 초과하고 라인 "내 첫 번째 줄", "내 첫 번째 줄"에
  • setMaxLines(2) 결과 아래
  • setMaxLines(1) 결과는
  • 분명히
  • setMaxLines(3)이 샘플에 영향을주지 않는 말 "내 두 번째 줄" str ing.

업데이트 : 이것은 "절단과 setDoubleLine"에 대한 작동합니다 :

// optional: string.replace("\n",""); or string.replace("\n"," "); 
tv.setSingleLine(false); 
tv.setEllipsize(TextUtils.TruncateAt.END); 
int n = 2; // the exact number of lines you want to display 
tv.setLines(n); 
+1

신난다. 그것은 가능한 두 줄과 끝에 타원 TextView가 있나요? 즉, setDoubleLine() 등? 이것이 내가 맥스 라인이 일하는 것을 상상 한 방법이다. 내 높이와 너비가 가치있는 것은 match_parent가 아닌 dip 값으로 설정됩니다. – sgarman

+0

@AndreyButov 편집을 제안 해 주셔서 감사합니다. 잠들지 않는 한 수락했습니다. 나는 당신의 제안에 따라 게시물을 수정했다. 다시 한번 감사드립니다. – stefan

관련 문제