Di Jetpack Compose Glimmer, komponen Card berfungsi sebagai penampung utama
untuk konten terkait, sehingga membuat batas visual yang jelas untuk unit informasi yang mudah dicerna. Kartu sangat mudah disesuaikan, mendukung kombinasi konten utama, judul opsional, subjudul, dan ikon utama atau akhir. Kartu mengisi lebar maksimum yang tersedia secara default, dapat difokuskan, dan Anda juga dapat membuatnya dapat diklik. Kartu mendukung pengaturan vertikal dengan gambar header di paling atas, diikuti oleh judul, subjudul, dan konten isi.
Kartu dibuat di sistem platform Jetpack Compose Glimmer platform, sehingga mewarisi properti fisik seperti efek kedalaman, kliping, dan sorotan batas yang konsisten.
Anatomi dan slot
Kartu Jetpack Compose Glimmer dibuat dari beberapa elemen khusus yang memungkinkan Anda menyesuaikan konten dan tata letaknya.
| Slot | Deskripsi |
|---|---|
Header |
Bagian atas kartu, yang dirancang untuk menampung gambar. |
Judul dan subjudul |
Kolom teks ini memberikan label utama dan sekunder untuk kartu. Judul ditempatkan di atas subjudul. |
Ikon utama |
Ikon opsional (biasanya |
Ikon akhir |
Ikon opsional yang muncul di akhir area konten kartu. |
Konten utama |
Isi inti kartu untuk |
Default kartu
Default berikut berlaku untuk kartu:
- Lebar: Kartu mengisi lebar maksimum layar yang tersedia untuk mengoptimalkan keterbacaan di display glasses.
- Tinggi minimum:
80.dp - Jarak vertikal teks:
3.dp - Bentuk header: Menggunakan
RoundedCornerShapedengan sudut24.dp - Padding konten: Default ke
GlimmerTheme.componentSpacingValues.medium. Hal ini memengaruhi padding terluar di sekitar gambar header dan penampung konten. - Bentuk: Default ke
GlimmerTheme.shapes.medium. Rendering teks: Menggunakan nilai default dari
GlimmerTheme.typographyuntuk slot berikut:- Judul:
bodyMedium - Subjudul:
caption - Konten utama:
bodySmall
- Judul:
Contoh: Kartu dasar
Kode berikut menunjukkan kode minimal yang diperlukan untuk membuat kartu:
Card { Text("This is a card") }
Contoh: Kartu dengan beberapa slot
Kode berikut menunjukkan cara menggunakan beberapa slot bersama-sama untuk membuat kartu:
Card( title = { Text("Card Title", style = GlimmerTheme.typography.titleMedium) }, subtitle = { Text("Sub-heading text", style = GlimmerTheme.typography.titleSmall) }, leadingIcon = { Icon(FavoriteIcon, contentDescription = "Favorite") }, trailingIcon = { Icon(BookmarkIcon, contentDescription = "Bookmark") }, header = { Image( painter = myHeaderImage, contentDescription = "Header image", contentScale = ContentScale.FillWidth ) }, ) { Text("This is a complete card") }
Poin penting tentang kode
- Menunjukkan cara menggunakan berbagai elemen kartu, seperti
title,subtitle, danleadingIcon, untuk menyesuaikan konten dan struktur kartu. - Menggunakan overload
CarddenganonClickuntuk membuat seluruh platform kartu menjadi interaktif.
Kartu tindakan
Jika ingin menyertakan tombol tindakan dengan kartu, gunakan
ActionCard. Kartu tindakan memiliki elemen yang sama dengan kartu standar dan juga menyertakan parameter action tambahan yang menentukan tombol bawah.
ActionCard di Jetpack Compose Glimmer.Contoh: Kartu tindakan dasar
Kode ini menunjukkan cara membuat ActionCard:
ActionCard( action = { Button(onClick = {}, trailingIcon = { Icon(FavoriteIcon, "Localized description") }) { Text("Send") } } ) { Text("This is a card with a title, leading icon, header image, and action") }
Contoh: Kartu tindakan dengan ikon
Kode ini menunjukkan cara membuat ActionCard yang lebih kompleks dengan ikon:
ActionCard( title = { Text("Card Title", style = GlimmerTheme.typography.titleMedium) }, subtitle = { Text("Sub-heading text", style = GlimmerTheme.typography.titleSmall) }, leadingIcon = { Icon(FavoriteIcon, contentDescription = "Favorite") }, header = { Image( painter = myHeaderImage, contentDescription = "Header image", contentScale = ContentScale.FillWidth ) }, action = { Button(onClick = { /* Handle action */ }) { Text("Action") } } ) { Text( "This is the main body content of the card, utilizing theme-tokens for consistent styling.", style = GlimmerTheme.typography.bodyMedium ) }