>  기사  >  Java  >  Android의 TextView 컨트롤 내에서 텍스트의 페이지를 매기는 방법은 무엇입니까?

Android의 TextView 컨트롤 내에서 텍스트의 페이지를 매기는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-09 18:26:02970검색

How to Paginate Text within a TextView Control in Android?

Android에서 텍스트 페이지 매기기

문제:

Android의 TextView 컨트롤 내에서 텍스트 페이지 매기기 텍스트를 페이지로 나누는 시기와 방법을 결정해야 합니다. TextView의 줄바꿈 ​​및 페이지 나누기 알고리즘은 쉽게 액세스할 수 없어 실제 디스플레이에서 텍스트가 끝나는 위치를 식별하기 어렵기 때문에 이는 어려울 수 있습니다.

해결책:

ViewTreeObserver를 사용하여 보이는 텍스트 범위를 모니터링하면 뷰 높이에 완전히 맞는 마지막 줄을 추적할 수 있습니다. 이를 통해 줄의 누적 높이를 기반으로 페이지를 생성할 수 있으므로 사용 가능한 수직 공간을 초과하는 줄이 나타나면 페이지가 깨지는 것을 보장합니다.

알고리즘:

  1. 텍스트 줄을 반복하여 줄의 아래쪽이 뷰 높이를 초과하는지 확인하세요.
  2. 따라서 새 페이지를 나누고 이전 페이지에 맞지 않는 마지막 줄의 상단과 뷰의 높이를 더해 새로운 누적 높이 값을 계산합니다.

구현:

이 알고리즘을 구현하려면 다음을 사용하세요. code:

// Setup code
ViewTreeObserver vto = txtViewEx.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        ViewTreeObserver obs = txtViewEx.getViewTreeObserver();
        obs.removeOnGlobalLayoutListener(this);
        height = txtViewEx.getHeight();
        scrollY = txtViewEx.getScrollY();
        Layout layout = txtViewEx.getLayout();
        firstVisibleLineNumber = layout.getLineForVertical(scrollY);
        lastVisibleLineNumber = layout.getLineForVertical(height + scrollY);
    }
});

참고:

이 솔루션은 줄 높이와 문자 간격을 존중하면서 텍스트의 페이지를 효율적으로 매깁니다. 또한 특수 문자와 동적 텍스트 변경도 처리합니다.

위 내용은 Android의 TextView 컨트롤 내에서 텍스트의 페이지를 매기는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.