Thành phần Switch
cho phép người dùng chuyển đổi giữa hai trạng thái: đã đánh dấu và chưa đánh dấu. Trong ứng dụng, bạn có thể sử dụng nút chuyển để cho phép người dùng thực hiện một trong những thao tác sau:
- Bật hoặc tắt một chế độ cài đặt.
- Bật hoặc tắt một tính năng.
- Chọn một lựa chọn.
Thành phần này có hai phần: con trỏ và dải âm thanh. Thumb là phần có thể kéo của nút chuyển và track là nền. Người dùng có thể kéo nút gạt sang trái hoặc phải để thay đổi trạng thái của nút chuyển. Người dùng cũng có thể nhấn vào nút chuyển để kiểm tra và xoá.
Cách triển khai cơ bản
Xem tài liệu tham khảo Switch
để biết định nghĩa đầy đủ về API. Sau đây là một số tham số chính mà bạn có thể cần sử dụng:
checked
: Trạng thái ban đầu của nút chuyển.onCheckedChange
: Lệnh gọi lại được gọi khi trạng thái của nút chuyển thay đổi.enabled
: Liệu nút chuyển đang bật hay tắt.colors
: Màu sắc dùng cho nút chuyển.
Ví dụ sau đây là cách triển khai tối thiểu thành phần kết hợp Switch
.
@Composable fun SwitchMinimalExample() { var checked by remember { mutableStateOf(true) } Switch( checked = checked, onCheckedChange = { checked = it } ) }
Phương thức triển khai này sẽ xuất hiện như sau khi bạn bỏ đánh dấu:
Đây là giao diện khi được chọn:
Cách triển khai nâng cao
Sau đây là các tham số chính mà bạn có thể muốn sử dụng khi triển khai một nút chuyển nâng cao hơn:
thumbContent
: Sử dụng thuộc tính này để tuỳ chỉnh giao diện của ngón tay cái khi được đánh dấu.colors
: Sử dụng thuộc tính này để tuỳ chỉnh màu của bản nhạc và con trỏ.
Hình thu nhỏ tuỳ chỉnh
Bạn có thể truyền bất kỳ thành phần kết hợp nào cho tham số thumbContent
để tạo một hình thu nhỏ tuỳ chỉnh. Sau đây là ví dụ về một nút chuyển sử dụng biểu tượng tuỳ chỉnh cho nút nhấn:
@Composable fun SwitchWithIconExample() { var checked by remember { mutableStateOf(true) } Switch( checked = checked, onCheckedChange = { checked = it }, thumbContent = if (checked) { { Icon( imageVector = Icons.Filled.Check, contentDescription = null, modifier = Modifier.size(SwitchDefaults.IconSize), ) } } else { null } ) }
Trong cách triển khai này, giao diện chưa đánh dấu giống với ví dụ trong phần trước. Tuy nhiên, khi được đánh dấu, cách triển khai này sẽ xuất hiện như sau:
Màu tùy chỉnh
Ví dụ sau đây minh hoạ cách bạn có thể sử dụng thông số màu để thay đổi màu của nút và đường dẫn của nút chuyển, có tính đến việc nút chuyển có được đánh dấu hay không.
@Composable fun SwitchWithCustomColors() { var checked by remember { mutableStateOf(true) } Switch( checked = checked, onCheckedChange = { checked = it }, colors = SwitchDefaults.colors( checkedThumbColor = MaterialTheme.colorScheme.primary, checkedTrackColor = MaterialTheme.colorScheme.primaryContainer, uncheckedThumbColor = MaterialTheme.colorScheme.secondary, uncheckedTrackColor = MaterialTheme.colorScheme.secondaryContainer, ) ) }
Phương thức triển khai có dạng như sau: