Rumah > Java > javaTutorial > Bagaimana untuk Mencipta ViewGroup Tersuai untuk Reka Letak Pecah Garis?

Bagaimana untuk Mencipta ViewGroup Tersuai untuk Reka Letak Pecah Garis?

Susan Sarandon
Lepaskan: 2024-11-08 02:32:01
asal
760 orang telah melayarinya

How to Create a Custom ViewGroup for Line-Breaking Layouts?

Kumpulan Pandangan Tersuai untuk Reka Letak Pecah Baris

Masalah:

Anda perlu mencipta susun atur yang mempersembahkan berbilang widget dalam cara yang boleh dibalut, membahagikannya kepada baris apabila perlu agar sesuai dengan ruang yang tersedia. Komponen ViewGroup lalai tidak mempunyai fungsi ini.

Penyelesaian:

Untuk mencapai pemecahan baris, anda boleh mencipta ViewGroup tersuai. Begini caranya:

  1. Ukur Kanak-kanak:

    Dalam onMeasure(), hitung lebar yang tersedia dan ulangi melalui paparan anak. Bagi setiap kanak-kanak, ukur lebar dan tingginya. Kemas kini garis_tinggi untuk mewakili ketinggian maksimum mana-mana kanak-kanak dalam garisan tertentu.

  2. Tentukan Pemisah Garis:

    Semasa pengukuran, semak sama ada lebar terkumpul paparan kanak-kanak melebihi lebar yang tersedia. Jika ya, tetapkan semula lebar dan naikkan ypos ke baris seterusnya.

  3. Tetapkan Parameter Reka Letak:

    Timpa generateDefaultLayoutParams() dan checkLayoutParams () untuk menentukan parameter reka letak tersuai anda. Parameter ini boleh menentukan jarak antara widget, contohnya.

  4. Paparan Kanak-kanak Reka Letak:

    Dalam onLayout(), ulangi melalui paparan anak sekali lagi dan letakkannya berdasarkan dimensi yang diukur dan pembolehubah xpos dan ypos. Kemas kini xpos semasa anda menambahkan widget pada baris.

  5. Sediakan Sokongan Atribut XML:

    Buat atribut XML tersuai untuk mendedahkan parameter reka letak. Ini membolehkan anda menentukannya dalam fail XML reka letak anda.

Contoh Pelaksanaan:

public class PredicateLayout extends ViewGroup {

    private int line_height;

    public PredicateLayout(Context context) {
        super(context);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        // Calculate available width
        // Iterate through child views and measure them

        if (xpos + childw > width) {
            xpos = getPaddingLeft();
            ypos += line_height;
        }
        ...
    }

    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        for (int i = 0; i < count; i++) {
            if (xpos + childw > width) {
                xpos = getPaddingLeft();
                ypos += line_height;
            }
            // Position the child view
        }
    }
}
Salin selepas log masuk

Dengan menggunakan reka letak tersuai ini, anda boleh mencapai tingkah laku boleh bungkus yang diingini untuk widget anda.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta ViewGroup Tersuai untuk Reka Letak Pecah Garis?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan