본문 바로가기

Android

TextView의 maxLines,singleLine, ellipsize 속성 사용하기

반응형

1) TextView의 maxLines, ellipsize를 이용한 텍스트 제어

TextView를 이용해 텍스트를 처리할 때 일정 글자수만 보여지고 글자 줄임을 하고 싶다면 TextView의 maxLines와 ellipsize를 이용해 지정할 수 있다.(maxLines는 현재 2까지만 지정 가능)

-----------------------------------------------------------------
ellipsize 속성 지정 예)
android:ellipsize="none" 아무 표시 없이 잘라줌
android:ellipsize="start" 앞 부분에 글자 줄임표시(...)
android:ellipsize="end" 뒷 부분에 글자 줄임표시(...)
android:ellipsize="middle" 중간 부분에 글자 줄임표시(...)
android:ellipsize="marquee" 일정 시간을 두고 왼쪽으로 글자가 흘러가게 함
------------------------------------------------------------------

예)

    텍스트 양이 두 줄을 넘어가면 두 줄까지만 표시하고 두 줄 끝 부분에 말줄임표시(...) 처리

    <TextView
        android:id="@+id/style_col4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="15dip"
        android:ellipsize="end"
        android:maxLines="2"
        />

        
2. TextView의 singleLine, ellipsize의 marquee를 이용한 흐르는 글자 처리하기

singleLine을 true로 지정하고 ellipsize를 marquee로 지정함으로써 글자수가 많아 한 라인에 다 보여줄 수 없을 때 글자를 흐르게 처리할 수 있음 (marquee는 포커스를 받을 수 있을 때 동작하기 때문에 ListView의 한 라인의 TextView 에서 처리시 잘 동작하지만 포커스를 못 받는 경우는 아래의 java 코드에서 처리하는 것처럼 setSelected(true) 메소드를 이용해 선택된 것으로 처리를 해야 함)

------------------------------------------------
예) 

    <TextView
        android:id="@+id/style_col4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="15dip"
        android:ellipsize="marquee"
        android:singleLine="true"
        />

------------------------------------------------

java 코드에서 처리하기
TextView detail_title = (TextView)findViewById(R.id.detail_title);
        //휴대폰 넓이 보다 텍스트가 길 경우 마키 처리
        detail_title.setSingleLine(true);
        detail_title.setEllipsize(TruncateAt.MARQUEE);
        //포커스를 받아야 문자가 흐르기 때문에
        //포커스를 받을 수 없는 상황에서는 선택된 것으로 처리하면 마키 동작
        detail_title.setSelected(true); 

반응형