Android : TextView가 자동으로 문자열의 마지막 3자를 자르고 바꿉니다.


131

A는 경우 String댄 이상 TextView의 폭이 자동으로 다음 줄에 래핑합니다. android:singleLine(더 이상 사용되지 않음) 또는을 사용하여 이것을 피할 수 있습니다 android:inputType="text". 내가 지금 필요한 것은 내 마지막 3자를 String" ... "로 바꾸는 것입니다 . 모노 스페이스 글꼴을 사용하지 않기 때문에 내에서 사용 된 문자에 따라 항상 달라집니다 String. 그래서 String의 마지막 3자를 a TextView로 바꾸고 대체 하는 가장 좋은 방법이 무엇인지 궁금 합니다. 안드로이드 프레임 워크에 이미 구현 된 것이있을 수 있습니다. 왜냐하면 일반적인 문제이기 때문입니다.

답변:


290

텍스트 뷰의 "ellipsize"속성을 사용할 수 있어야합니다.

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

레이아웃에 중력 값을 적용해야 할 수도 있습니다. 나는 때때로 그들없이 "자동 스트레칭"보기를 보았다.


완전한. 감사. 이전에 시도했지만 작동하지 않았습니다. android : singleLine = "true"대신 android : inputType = "text"(더 이상 사용되지 않아야 함)를 사용했기 때문에 작동하지 않았습니다. 그러나 이제 android : singleLine = "true"를 사용하겠습니다. Muchas Gracias.
znq

44
여전히 "..."을 추가하지 않습니다. 나 에게이 질문은 완전히 대답하지 않았습니다! 이 대답은 "short verylongword"를 "short verylon ..."이 아닌 "short"로 만들 것입니다. 게다가 여러분은 더 이상 사용되지 않는 속성을 사용할 것을 제안합니다.
OneWorld

7
훌륭하게 작동하지만 singleLine은 더 이상 사용되지 않으므로 maxLines = "1"을 대신 사용해야합니다. 참고로, 타원은 여러 줄로도 작동합니다!
Torre Lasley 2016 년

4
singleLine은 더 이상 사용되지 않습니다. maxLines = "1"을 사용하십시오. 이전 답변에 대한 의견
Ewoks

1
MaxLine = 1은 중간에 텍스트 뷰를 자릅니다. SingleLine = True가 예상대로 작동합니다.

33

이 문제에 대한 흥미로운 해결 방법을 찾았습니다.

maxLines=1
ellipsize=end
scrollHorizontally=true

요령은 수평 스크롤링에 대한 마지막 진술입니다 .... 확인하십시오. 적어도 v2.2에서는 작동합니다.


흥미롭고 ... 알아서 좋습니다. 헤드 업을 해주셔서 감사합니다.
BonanzaDriver 2018

4

프로그래밍 방식으로 다음을 사용할 수 있습니다.

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);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.