화면에 보이는 텍스트를 확인하려면 텍스트 레이아웃이 완료될 때까지 기다린 후 다음을 사용하여 검색하세요. :
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); } });
목표: 표시되는 마지막 줄이 뷰 높이에 완전히 맞을 때 새 페이지를 나눕니다.
Pagination 클래스는 필요한 로직을 구현합니다:
public class Pagination { // Configuration parameters private boolean mIncludePad; private int mWidth; private int mHeight; private float mSpacingMult; private float mSpacingAdd; private CharSequence mText; private TextPaint mPaint; private List<CharSequence> mPages; public Pagination(CharSequence text, int pageW, int pageH, TextPaint paint, float spacingMult, float spacingAdd, boolean inclidePad) { // ... initialization ... layout(); } private void layout() { // ... perform layout and pagination ... } }
아래 샘플은 혼합 HTML에 페이지 매김을 적용합니다. 및 스팬 문자열:
public class PaginationActivity extends Activity { // ... code ... private Pagination mPagination; private CharSequence mText; private int mCurrentIndex = 0; @Override protected void onCreate(Bundle savedInstanceState) { // ... code ... mText = TextUtils.concat(htmlString, spanString); mTextView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { // ... code ... mPagination = new Pagination(mText, mTextView.getWidth(), mTextView.getHeight(), mTextView.getPaint(), mTextView.getLineSpacingMultiplier(), mTextView.getLineSpacingExtra(), mTextView.getIncludeFontPadding()); update(); }); } private void update() { final CharSequence text = mPagination.get(mCurrentIndex); if(text != null) mTextView.setText(text); } }
더 쉬운 통합을 위해 PagedTextView 라이브러리를 고려하세요.
dependencies { implementation 'com.github.onikx:pagedtextview:0.1.3' }
<com.onik.pagedtextview.PagedTextView android:layout_width="match_parent" android:layout_height="match_parent" />
위 내용은 Android에서 텍스트 페이지 매김을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!