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

TextView를 이용한 뷰어 제작시 질문입니다.

0 추천

TextView크기 만큼 텍스트 파일에 있는 내용을 복사해 페이지별로 저장하는 로직입니다.

그런데 이렇게 나눠서 TextView 저장된 페이지별 데이터를 복사해서 보여주는

TextView영역을 벗어나 글씨가 잘리는 문제가 발생합니다.

 

다음은 TextView크기별 페이지를 저장하는 로직입니다만 도대체 어디가 잘못 걸까요???

 

 

br = new BufferedReader(new InputStreamReader(is, "utf-8"));
m_pageContent.put(pageNum, new ArrayList<String>());


while ((line = br.readLine()) != null) { //파일에서 한줄을 읽는다

    Paint p = t.getPaint();
    Rect rc = new Rect();
    p.getTextBounds(line, 0, line.length(), rc);
    int textAreaWidth = t.getWidth();

    int m = rc.width() / textAreaWidth;

    if ( m == 0 ){
        heightLineCount++;
    }else{
        heightLineCount += m;
        if ( rc.width() % textAreaWidth > 0 )
            heightLineCount++;
    }

    //라인수가 textViewHeight 넘어갔는지 체크 한다
    line = line + "\n";

    float cap = Math.round(p.descent() - p.ascent());

    if ( heightLineCount * cap < t.getHeight() ){

        //페이지
        m_pageContent.get(pageNum).add(line);
    }else{
        Log.d("superdroid", "mmmo");
        break;
    }

yeops (140 포인트) 님이 2016년 5월 12일 질문

1개의 답변

0 추천
텍스트뷰의 넓이가 100이라고 가정하고,
A라는 글자의 넓이가 15라고 할때
A가 13자 있는 라인을 계산할때,
해당 라인의 넓이는 총 195가 됩니다.

위의 계산식으로는 2줄로 인식되죠.
하지만, 저 글자들은 텍스트뷰에서 3줄로 표시됩니다.
왜냐하면, 텍스트뷰는 넓이가 총 100이므로 한줄에 6글자밖에 들어가지 않기 때문이죠.

그외에도 여러곳에서 허점이 보이지만,
일단 라인 계산하는 계산식이 가장 큰 허점입니다.
바램 (19,650 포인트) 님이 2016년 5월 12일 답변
...