Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Nhiều ứng dụng truyền hình có các trang chi tiết nội dung kèm theo siêu dữ liệu liên quan cho một nội dung cụ thể (tức là một bộ phim cụ thể). Bạn có thể triển khai các trang chi tiết dưới dạng một hàm kết hợp, lấy siêu dữ liệu của nội dung đã chọn làm đối số.
Đoạn mã sau đây là một cách triển khai điển hình của màn hình chi tiết. Thao tác này tải một hình ảnh của bộ phim đã cho cùng với tiêu đề và nội dung mô tả của bộ phim đó. Người dùng có thể chuyển đổi màn hình sang màn hình trình phát. Thao tác này có thể được kích hoạt bằng cách nhấp vào một nút để bắt đầu phát phim. Bạn có thể xử lý thao tác này để thực hiện chuyển đổi màn hình bằng cách đặt một hàm gọi lại.
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-08-27 UTC.
[null,null,["Cập nhật lần gần đây nhất: 2025-08-27 UTC."],[],[],null,["Many TV apps include content detail pages with relevant metadata for a given\npiece of content (i.e. a specific movie). Detail pages can be implemented as a\ncomposable function, taking metadata of the selected content as its argument.\n\nThe following code is a typical implementation of the details screen. It\n[loads an image](/jetpack/compose/graphics/images/loading#internet-loading)\nof the given movie with its title and description. The user's able to make a\nscreen transition to the player screen, which can be triggered by clicking a\nbutton to start movie playback. You can handle this action to make the screen\ntransition by setting a callback function. \n\n @Composable\n fun DetailsScreen(\n movie: Movie,\n modifier: Modifier = Modifier,\n onStartPlayback: (Movie) -\u003e Unit = {}\n ) {\n Box(modifier = modifier.fillMaxSize()){\n AsyncImage(\n modifier = Modifier.fillMaxSize()\n model = movie.image,\n contentDescription = null,\n contentScale = ContentScale.Crop,\n )\n Column(modifier = Modifier.padding(32.dp)){\n Text(\n text = movie.title,\n style = MaterialTheme.typeography.heading2\n )\n Text(text = movie.description)\n Button(onClick = { onStartPlayBack(movie) }){\n Text(text = R.string.startPlayback)\n }\n }\n }\n }\n\n| **Note:** `AsyncImage` is a composable to load an image from the internet. See [Loading Images](/develop/ui/compose/graphics/images/loading#internet-loading) for details."]]