คอมโพสได้ Slider ช่วยให้ผู้ใช้เลือกค่าจากช่วงค่าได้
คุณอาจใช้แถบเลื่อนเพื่อให้ผู้ใช้ทำสิ่งต่อไปนี้
- ปรับการตั้งค่าที่ใช้ช่วงค่า เช่น ระดับเสียงและความสว่าง
- กรองข้อมูลในกราฟ เช่น เมื่อตั้งค่าช่วงราคา
- ข้อมูลจากผู้ใช้ เช่น การตั้งค่าคะแนนในรีวิว
แถบเลื่อนประกอบด้วยแทร็ก ปุ่มเลื่อน ป้ายกำกับค่า และขีดบอกระยะ
- แทร็ก: แทร็กคือแถบแนวนอนที่แสดงช่วงค่าที่แถบเลื่อนใช้ได้
- ปุ่มเลื่อน: ปุ่มเลื่อนคือองค์ประกอบควบคุมที่ลากได้บนแถบเลื่อน ซึ่ง ช่วยให้ผู้ใช้เลือกค่าที่เฉพาะเจาะจงภายในช่วงที่แทร็กกำหนดได้
- ขีดบอกระยะ: ขีดบอกระยะเป็นเครื่องหมายหรือตัวบ่งชี้ภาพที่ไม่บังคับ ซึ่ง ปรากฏตามแทร็กของแถบเลื่อน
การใช้งานพื้นฐาน
ดูคำจำกัดความ API ทั้งหมดได้ที่ข้อมูลอ้างอิงของ Slider พารามิเตอร์หลักบางส่วนสำหรับคอมโพสได้ Slider มีดังนี้
value: ค่าปัจจุบันของแถบเลื่อนonValueChange: แลมบ์ดาที่จะเรียกใช้ทุกครั้งที่ค่ามีการเปลี่ยนแปลงenabled: ค่าบูลีนที่ระบุว่าผู้ใช้โต้ตอบกับแถบเลื่อนได้หรือไม่
ตัวอย่างต่อไปนี้เป็นแถบเลื่อนแบบตรงไปตรงมา ซึ่งอนุญาตให้ผู้ใช้เลือกค่าจาก 0.0 ถึง 1.0 เนื่องจากผู้ใช้เลือกค่าใดก็ได้ในขอบเขตนั้น แถบเลื่อนจึงเป็นแบบ ต่อเนื่อง
@Preview @Composable fun SliderMinimalExample() { var sliderPosition by remember { mutableFloatStateOf(0f) } Column { Slider( value = sliderPosition, onValueChange = { sliderPosition = it } ) Text(text = sliderPosition.toString()) } }
การใช้งานนี้จะปรากฏดังนี้
การใช้งานขั้นสูง
เมื่อใช้งานแถบเลื่อนที่ซับซ้อนมากขึ้น คุณยังใช้พารามิเตอร์ต่อไปนี้ได้ด้วย
colors: อินสแตนซ์ของSliderColorsที่ช่วยให้คุณควบคุมสีของแถบเลื่อนได้valueRange: ช่วงค่าที่แถบเลื่อนใช้ได้steps: จำนวนรอยบากบนแถบเลื่อนที่ปุ่มเลื่อนจะสแนป
ข้อมูลโค้ดต่อไปนี้จะใช้งานแถบเลื่อนที่มี 3 ขั้นตอน โดยมีช่วง
ตั้งแต่ 0.0 ถึง 50.0 เนื่องจากปุ่มเลื่อนจะสแนปกับแต่ละขั้นตอน แถบเลื่อนนี้จึงเป็นแบบ ไม่ต่อเนื่อง
@Preview @Composable fun SliderAdvancedExample() { var sliderPosition by remember { mutableFloatStateOf(0f) } Column { Slider( value = sliderPosition, onValueChange = { sliderPosition = it }, colors = SliderDefaults.colors( thumbColor = MaterialTheme.colorScheme.secondary, activeTrackColor = MaterialTheme.colorScheme.secondary, inactiveTrackColor = MaterialTheme.colorScheme.secondaryContainer, ), steps = 3, valueRange = 0f..50f ) Text(text = sliderPosition.toString()) } }
การใช้งานจะปรากฏดังนี้
แถบเลื่อนช่วง
คุณยังใช้คอมโพสได้ RangeSlider โดยเฉพาะได้ด้วย ซึ่งช่วยให้ผู้ใช้เลือกค่าได้ 2 ค่า ซึ่งอาจมีประโยชน์ในกรณีต่างๆ เช่น เมื่อผู้ใช้ต้องการเลือกราคาสูงสุดและต่ำสุด
ตัวอย่างต่อไปนี้เป็นตัวอย่างที่ค่อนข้างตรงไปตรงมาของแถบเลื่อนช่วงแบบต่อเนื่อง
@Preview @Composable fun RangeSliderExample() { var sliderPosition by remember { mutableStateOf(0f..100f) } Column { RangeSlider( value = sliderPosition, steps = 5, onValueChange = { range -> sliderPosition = range }, valueRange = 0f..100f, onValueChangeFinished = { // launch some business logic update with the state you hold // viewModel.updateSelectedSliderValue(sliderPosition) }, ) Text(text = sliderPosition.toString()) } }