2009-11-03 3 views
100

StringTextView의 너비보다 길면 자동으로 다음 줄로 넘어갑니다. android:singleLine (사용되지 않음)을 사용하거나 android:inputType="text"을 설정하여이 문제를 방지 할 수 있습니다. 지금 내가 필요로하는 것은 내 String의 마지막 3자를 "..."으로 대체하는 것입니다. 고정 폭 글꼴을 사용하지 않으므로 내 String에 사용 된 문자에 따라 항상 달라집니다. 그래서 TextView에서 문자열의 마지막 3 문자를 가져 와서 바꾸는 가장 좋은 방법은 무엇인지 궁금합니다. 아마도 이것이 공통적 인 문제이기 때문에 안드로이드 프레임 워크에 이미 구현 된 것이있을 것입니다.Android : TextView는 자동으로 문자열의 마지막 3자를 자르고 바꿉니다.

답변

222

당신은 텍스트 뷰의 "ellipsize"속성 사용할 수 있어야합니다 : 또한 너무 레이아웃에 중력 값을 적용해야 할 수도 있습니다

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/text_mytext" 
    android:ellipsize="end" 
    android:maxLines="1" 
/> 

을; 나는 때때로 그것들없이 "auto-stretching"뷰를 보았습니다.

+0

하나를 사용할 수 있습니다 - 사용자가하고 싶어 정확하게 그것을 자신 – I82Much

+0

완벽한 롤하지 않고. 감사. 나는 android : singleLine = "true"대신에 android : inputType = "text"를 사용했기 때문에 이전에 시도했지만 작동하지 않았습니다. 하지만 지금은 android : 1Line = "true"를 고수 할 것입니다. Muchas gracias. – znq

+30

여전히 "..."을 추가하지 않습니다. 나를 위해,이 질문은 완전히 답변되지 않았습니다! 이 대답은 "짧은 verylongword"를 "짧게"만들고 "짧은 verylon ..."으로 만들지 않을 것입니다. 꼭 꼭 쓰지 않는 속성을 사용하는 것이 좋습니다. – OneWorld

28

이 문제에 대한 흥미로운 일 라운드를 찾았습니다.

maxLines=1 
ellipsize=end 
scrollHorizontally=true 

트릭은 수평 스크롤에 관한 마지막 문장입니다. 알아보십시오. 적어도 v2.2에서 작동합니다. 프로그래밍 방식

+7

안드로이드 4.0에서 작동을 멈추는 것 같습니다 – caw

+0

재미있는 ... 잘 알고 있습니다. Marco에게 감사의 말을 전합니다. – BonanzaDriver

2

당신은

TextView tx = new TextView(this); 
tx.setTextSize(13); 
tx.setGravity(Gravity.CENTER); 
tx.setTop(90); 
tx.setText("Long text here"); 
tx.setTextColor(Color.BLACK); 
tx.setSingleLine(true); 
tx.setEllipsize(TruncateAt.END); 
관련 문제