마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

ViewPager 질문 드립니다 ㅜㅜ

0 추천
하다하다 도무지 안돼서 다시 질문드려요 ㅠㅠ

viewPager 안에 길이가 약 4000자 이상 되는 문자열을 보여 줄려고 하는데요.

하나하나 세어보니깐 textView의 textSize가 16dp 일때 한 줄당 29글자씩들어 가 더라구요.

이렇게 27줄을 보여 줄려고 하는데 여기서 변수는 개행(\n)입니다 ㅜㅜ

개행이들어가면 UI상으로는 개행이 되지만 문자열의 길이는 다른 문자와 동일하게

1만 늘어 나더라구요 ㅠㅠ

어떤 식으로 String을 잘라서 페이지 별로 보여줘야 할지 질문 드립니다 ㅠㅠ
익명사용자 님이 2016년 10월 6일 질문

6개의 답변

0 추천
 
채택된 답변
어디서 막히셨는지 잘 모르겠네요

원하는 글자수만큼 짤라서

리스트나 배열에 보관한다음 꺼내오면 될 거 같은데..

4000자면 최대 400자씩 10개로 잘라서 10페이지에 놓는다던가..
익명사용자 님이 2016년 10월 6일 답변
어디서 막혔냐면요 ㅠㅠ 만약에 40자씩 10줄이면 400자씩 끊어서 10개로 자르면 편할텐데요.... 398자에 개행(\n)이 2번포함되도 400자인데 이렇게되면 12줄이 돼어서 나머지 2줄은 글씨가 넘어가서 보여주지못하게 되거든요 ㅠㅠ 여기서 막혔습니다...
결국 짤리는 부분이 문제인거네요
해결방법은 다양하겠지만

위에서 말씀 드린것처럼 예를 들어 400자 마다 짜른다고 가정하면
먼저 꽉찼을때 textview의 크기를 구한후 값을 저장합니다

그리고 400자를 넣었을때 TextView의 크기를 구해서 그 값이
위에 저장한값보다 크면 TextSize를 하나씩 줄여가면서 비교해서
딱 400자씩 넣을 수 있습니다

TextView 크기 구하는 것은 이런식으로 하면 됩니다

Rect bounds = new Rect();
TextView.getPaint().getTextBounds(TextView.getText().toString(), 0, TextView.getText().length(), bounds);
Log.d("TEST",bounds.width());

그리고 위 방법은 한가지 예를 든거고
규칙을 정하는거에 따라 방향이 많이 달라집니다
한페이지에 TextView 10개씩 배치하는 것도 가능하고
개행과 개행사이를 짤라서 또 규칙정할수도 있고...
0 추천
일단 원하시는 기능이 무엇인지 정확 하지 않아요~~!
뷰페이저에 한줄로 텍스트뷰를 뿌리고 싶단 건가요? 그럼 개행이 문제 될건 없어 보이는데요??
개행문자는replace하면 되니까요~!

또한 글자크기를 정해 놓는다고 모든 디바이스에서 같은 글자가 들어가는게 아닙니다.
즉 글자수를 계산 하는게 아니라 텍스트뷰의 크기가 꽉찼을때 넘겨야 하는게 정상입니다.
ThisPlus (46,920 포인트) 님이 2016년 10월 6일 답변
0 추천
결국은 옳은 방법이 아닙니다.

단말기마다 보여줄 수 있는 갯수가 다르니.. 현재 개발중인 단말기 해상도에서 맞춘다고 한들...

다른단말기에서는 더 이상하게 보일 수 있죠.....
개발자초심 (21,220 포인트) 님이 2016년 10월 6일 답변
0 추천
폰트에 따라서 다르고, 굴림, 굴림체 식으로 가변형 폰트인지 고정형 폭 폰트인지 에 따라서도 다릅니다.

텍스트 뷰보다는 페인트로 직접 그리는걸 계산해야 할 것 같아 보입니다만

관련 글을 한번 파악해보세요

http://stackoverflow.com/questions/3630086/how-to-get-string-width-on-android
aucd29 (218,390 포인트) 님이 2016년 10월 6일 답변
0 추천
단순히 "\n" 이 문제라면 String replaceall 같은 것으로 "\n" 를 전부 제거 하고 길이에 맞춰

다시 넣어주시거나, 자동으로 바꾸게 해주시면 될 듯 합니다.
익명사용자 님이 2016년 10월 6일 답변
보여 줄려고 하는 contents의 특성상 \n을 제거 할수가 없습니다 ㅠㅠ
0 추천
답변해 주신분들 모두다 감사드립니다 !!

지금 개발중은 어플은 viewpager를 사용해서 소설 같은것을 읽을수 있도록 구현 해줄려고 하고있습니다.

위에 쓴것 처럼 한줄이 라인고 27줄 정도 보여줄 생각이구요!!

디바이스 마다 해상도가 다르다는 변수도 생각을 못했네요 ㅠㅠ

textview 크기를 구해서 이래저래 해봐야겠네요ㅜㅜ
익명사용자 님이 2016년 10월 6일 답변
...