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

Bagaimana untuk Melaksanakan Penomboran Teks dalam Android?

DDD
Lepaskan: 2024-11-09 06:25:02
asal
291 orang telah melayarinya

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

            }
        });
Salin selepas log masuk

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 ...
    }
}
Salin selepas log masuk

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);
    }
}
Salin selepas log masuk

Perpustakaan PagedTextView

Pertimbangkan perpustakaan PagedTextView untuk penyepaduan yang lebih mudah:

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

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

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan