Rumah >Java >javaTutorial >Bagaimana untuk Melaksanakan Penomboran Teks dalam Android?

Bagaimana untuk Melaksanakan Penomboran Teks dalam Android?

DDD
DDDasal
2024-11-09 06:25:02279semak imbas

How to Implement Text Pagination in Android?

Teks Penomboran dalam Android

Menentukan Teks Kelihatan

Untuk memastikan teks yang boleh dilihat pada skrin, tunggu sehingga susun atur teks selesai dan kemudian dapatkan semula menggunakan :

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);

            }
        });

Algoritma Ringkasan

Objektif: Pecah halaman baharu apabila baris terakhir kelihatan sesuai sepenuhnya dalam ketinggian paparan.

Butiran Pelaksanaan

Kelas Penomboran melaksanakan yang diperlukan logik:

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 ...
    }
}

Algoritma Aliran

  1. Lelaran melalui baris teks.
  2. Semak sama ada bahagian bawah garisan melebihi ketinggian paparan.
  3. Jika ya, pecahkan halaman baharu dan laraskan pengiraan ketinggian terkumpul .

Penggunaan Contoh

Sampel di bawah digunakan penomboran kepada HTML bercampur dan rentetan Spanned:

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);
    }
}

Perpustakaan PagedTextView

Pertimbangkan perpustakaan PagedTextView untuk penyepaduan yang lebih mudah:

dependencies {
    implementation 'com.github.onikx:pagedtextview:0.1.3'
}
<com.onik.pagedtextview.PagedTextView
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Penomboran Teks dalam Android?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn