마스터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일 답변
...