Rumah >Java >javaTutorial >Bagaimana untuk Mencipta ViewGroup Tersuai untuk Reka Letak Pecah Garis?
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:
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.
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.
Tetapkan Parameter Reka Letak:
Timpa generateDefaultLayoutParams() dan checkLayoutParams () untuk menentukan parameter reka letak tersuai anda. Parameter ini boleh menentukan jarak antara widget, contohnya.
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.
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 } } }
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!