티스토리 뷰

반응형

숭실대학교 커뮤니티 SSUmunity 에서 학우들의 스마트한 캠퍼스라이프를 위해 

학교 커뮤니티 + 학사관리(유세인트) 기능을 통합한  ' SSULiTE ' 어플리케이션을 개발하고 있다. 

<링크 : https://play.google.com/store/apps/details?id=org.ssumunity.ssulite >

서비스 통합 배포로 인한 슈라이트 서비스 중지  < 2019.08.10 >


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

최초 게시 일자 : 2017.07.17 

내용 업데이트 : 2017.10.16 - EditTextView 에서의 maxLines 사용 방법 추가

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ





오늘은 공지사항을 파싱하여 카드리스트 뷰로 보여주는 작업을 하고 있었는데,

모바일 화면 크기마다, 공지사항의 제목마다 글자가 레이아웃의 width 를 범람하여,

흉측하게 변해버리는 상황이 벌어졌다.





이렇게 TextView 나  EditView 에서 해당 뷰의 width를 넘거나 표현해주고자 하는 line 수를 넘어가면

아래와 같이 "..." 을 붙여줘야하는 상황이 가끔 생긴다.





하지만, 이를 지원 하던 singleLine 이 deprecated 되면서, 

더이상 xml에 singleLine사용하는 것을 권하지 않는다.






이를 대신할 방법으로 고민하는 수 많은 개발자들이(내가 그랬다..) 아마

view 의 width 를 measure 하는 함수를 호출하여 maxWidth 를 구한 후,



1
2
3
4
5
if( view.length >= maxwidth )
 
text = text.substring(0, maxwidth-2);
 
text = text + "..." ;
cs




이런 코드로 텍스트를 수정하여 붙이는 좋지 못한 방법을 사용하지 않았을까 싶다.


이제 아래의 방법으로 오래된 singleLine 과 소프트코딩을 통한 스트링 처리방법을 바꿔보도록 하자.




1
android:maxLines="1"
cs


최대 라인수를 지정해주는 옵션으로 위와 같이 사용하면 SingleLine 옵션과 마찬가지로 한줄만 표시된다.



1
android:ellipsize ="end"
cs


다음은 줄임표 옵션으로 "end" 옵션을 주면 maxLines 의 마지막 넘는 글자에 ... 을 붙여준다.


1
2
3
4
5
6
7
8
9
 android:ellipsize="none" 맨 뒤에 아무 표시 없이 잘라줌.
 
 android:ellipsize="start" 맨 앞에 ... 으로 줄여줌
 
 android:ellipsize="end" 맨 뒤에 ... 으로 줄여줌
 
 android:ellipsize="middle" 중간에 ... 으로 줄여줌
 
 android:ellipsize="marquee" 왼쪽으로 글자가 흘러가면 보여줌.
cs


ellipsize 옵션은 위와 같이 총 5개의 옵션이 있다,

이를 활용하여 singleLine 으로 사용하던 말 줄임 효과를 줄 수 있다.




물 흐르듯 넘치는 글자들을 maxLine 과 ellpsize 옵션을 통하여 깔끔하게 처리했다.




ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


*2017.10.16 EditTextView 에서 maxLines 속성 사용방법에 관한 추가내용



Android maxLines not working in android 에 관한

 많은 문의가 들어와서 이에 대한 내용을 추가하고자 한다.



우선 결론부터 말하면, EditTextView 에서

maxLines 옵션이 작동하려면, inputType에 옵션도 같이 작성해줘야한다.



위와 같이 singLine 대신 maxLines 을 사용하려고하나, 잘 적용이 되지 않아

질문을 올리는 사람들이 많음을 알 수 있다.



우선, maxLines 에 관한 Android Documents 내용을 확인해보면,




Makes the TextView be at most this many lines tall. When used on an editable text, the inputType attribute's value must be combined with the textMultiLine flag for the maxLines attribute to apply.




 EditTextView에 maxLines attr을 적용하려면 inputType 을 필수로 적용해야한다. 라고 안내가 되어있습니다.




<EditTextView

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:inputType="phone"

android:maxLines="1""/>



 위와 같이 inputType 에 적용시킬 타이핑 타입에 대해서 작성을 하고, inputType 은 or연산자로 ( | ) type을 추가 시킬 수 있습니다.

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31