ใช้เคล็ดลับเครื่องมือเพื่อเพิ่มบริบทให้กับปุ่มหรือองค์ประกอบ UI อื่นๆ เคล็ดลับเครื่องมือมี 2 ประเภท ได้แก่
- เคล็ดลับเครื่องมือแบบธรรมดา: อธิบายองค์ประกอบหรือการทำงานของปุ่มไอคอน
- เคล็ดลับเครื่องมือแบบสมบูรณ์: ให้รายละเอียดเพิ่มเติม เช่น อธิบายคุณค่าของฟีเจอร์ นอกจากนี้ยังใส่ชื่อ ลิงก์ และปุ่มที่ไม่บังคับได้ด้วย
แพลตฟอร์ม API
คุณสามารถใช้ Composable TooltipBox เพื่อใช้เคล็ดลับเครื่องมือในแอปได้
คุณควบคุมลักษณะที่ปรากฏของ TooltipBox ด้วยพารามิเตอร์หลักต่อไปนี้
positionProvider: วางเคล็ดลับเครื่องมือให้สัมพันธ์กับเนื้อหา Anchor โดยปกติแล้ว คุณจะใช้ผู้ให้บริการตำแหน่งเริ่มต้นจากTooltipDefaultsหรือจะระบุผู้ให้บริการของคุณเองก็ได้หากต้องการตรรกะการกำหนดตำแหน่งที่กำหนดเองtooltip: Composable ที่มีเนื้อหาของเคล็ดลับเครื่องมือ โดยปกติแล้วคุณจะใช้ ComposablePlainTooltipหรือRichTooltip- ใช้
PlainTooltipเพื่ออธิบายองค์ประกอบหรือการทำงานของปุ่มไอคอน - ใช้
RichTooltipเพื่อให้รายละเอียดเพิ่มเติม เช่น อธิบายคุณค่าของฟีเจอร์ เคล็ดลับเครื่องมือแบบริชอาจมีชื่อ ลิงก์ และปุ่มที่ไม่บังคับ
- ใช้
state: ตัวเก็บสถานะที่มีตรรกะ UI และสถานะองค์ประกอบสำหรับเคล็ดลับเครื่องมือนี้content: เนื้อหาที่ประกอบกันได้ซึ่งยึดกับเคล็ดลับเครื่องมือ
แสดงเคล็ดลับเครื่องมือแบบธรรมดา
ใช้เคล็ดลับเครื่องมือแบบธรรมดาเพื่ออธิบายองค์ประกอบ UI สั้นๆ ข้อมูลโค้ดนี้จะแสดงเคล็ดลับเครื่องมือธรรมดาที่ด้านบนของปุ่มไอคอนซึ่งมีป้ายกำกับว่า "เพิ่มลงในรายการโปรด"
@Composable fun PlainTooltipExample( modifier: Modifier = Modifier, plainTooltipText: String = "Add to favorites" ) { TooltipBox( modifier = modifier, positionProvider = TooltipDefaults.rememberPlainTooltipPositionProvider(), tooltip = { PlainTooltip { Text(plainTooltipText) } }, state = rememberTooltipState() ) { IconButton(onClick = { /* Do something... */ }) { Icon( imageVector = Icons.Filled.Favorite, contentDescription = "Add to favorites" ) } } }
ประเด็นสำคัญเกี่ยวกับโค้ด
TooltipBoxจะสร้างเคล็ดลับเครื่องมือที่มีข้อความ "เพิ่มลงในรายการโปรด"TooltipDefaults.rememberPlainTooltipPositionProvider()มีการกำหนดตำแหน่งเริ่มต้นสำหรับเคล็ดลับเครื่องมือแบบธรรมดาtooltipเป็นฟังก์ชัน Lambda ที่กำหนดเนื้อหาของเคล็ดลับเครื่องมือโดยใช้ ComposablePlainTooltipText(plainTooltipText)แสดงข้อความภายในเคล็ดลับเครื่องมือtooltipStateควบคุมสถานะของเคล็ดลับเครื่องมือ
IconButtonสร้างปุ่มที่คลิกได้พร้อมไอคอนIcon(...)แสดงไอคอนรูปหัวใจภายในปุ่ม- เมื่อผู้ใช้โต้ตอบกับ
IconButtonTooltipBoxจะแสดงเคล็ดลับเครื่องมือพร้อมข้อความ "เพิ่มลงในรายการโปรด" ผู้ใช้สามารถเรียกใช้เคล็ดลับเครื่องมือได้ด้วยวิธีต่อไปนี้ ทั้งนี้ขึ้นอยู่กับอุปกรณ์ที่ใช้ - วางเคอร์เซอร์เหนือไอคอน
- กดไอคอนค้างไว้บนอุปกรณ์เคลื่อนที่
ผลลัพธ์
ตัวอย่างนี้จะสร้างเคล็ดลับเครื่องมือธรรมดาที่ด้านบนของไอคอน
แสดงเคล็ดลับเครื่องมือที่สมบูรณ์
ใช้เคล็ดลับเครื่องมือแบบริชเพื่อระบุบริบทเพิ่มเติมเกี่ยวกับองค์ประกอบ UI ตัวอย่างนี้จะสร้างเคล็ดลับเครื่องมือแบบริชหลายบรรทัดพร้อมชื่อที่ยึดกับ Icon:
@Composable fun RichTooltipExample( modifier: Modifier = Modifier, richTooltipSubheadText: String = "Rich Tooltip", richTooltipText: String = "Rich tooltips support multiple lines of informational text." ) { TooltipBox( modifier = modifier, positionProvider = TooltipDefaults.rememberRichTooltipPositionProvider(), tooltip = { RichTooltip( title = { Text(richTooltipSubheadText) } ) { Text(richTooltipText) } }, state = rememberTooltipState() ) { IconButton(onClick = { /* Icon button's click event */ }) { Icon( imageVector = Icons.Filled.Info, contentDescription = "Show more information" ) } } }
ประเด็นสำคัญเกี่ยวกับโค้ด
TooltipBoxจะจัดการ Listener เหตุการณ์สําหรับการโต้ตอบของผู้ใช้และอัปเดตTooltipStateตามนั้น เมื่อTooltipStateระบุว่าควรแสดงเคล็ดลับเครื่องมือ แลมบ์ดาของเคล็ดลับเครื่องมือจะทำงาน และTooltipBoxจะแสดงRichTooltipTooltipBoxทำหน้าที่เป็น Anchor และคอนเทนเนอร์สำหรับทั้งเนื้อหาและเคล็ดลับเครื่องมือ- ในกรณีนี้ เนื้อหาคือคอมโพเนนต์
IconButtonซึ่งให้ลักษณะการทำงานของการดำเนินการที่แตะได้ เมื่อกดค้าง (บนอุปกรณ์แบบสัมผัส) หรือวางเมาส์เหนือ (เช่น เคอร์เซอร์เมาส์) ที่ใดก็ได้ในเนื้อหาของTooltipBoxเคล็ดลับเครื่องมือจะแสดงขึ้นเพื่อแสดงข้อมูลเพิ่มเติม
- ในกรณีนี้ เนื้อหาคือคอมโพเนนต์
- คอมโพสิเบิล
RichTooltipจะกำหนดเนื้อหาของเคล็ดลับเครื่องมือ ซึ่งรวมถึงชื่อและเนื้อหาTooltipDefaults.rememberRichTooltipPositionProvider()ให้ข้อมูลการกำหนดตำแหน่งสำหรับเคล็ดลับเครื่องมือที่สมบูรณ์
ผลลัพธ์
ตัวอย่างนี้จะสร้างเคล็ดลับเครื่องมือที่สมบูรณ์พร้อมชื่อที่แนบมากับไอคอนข้อมูล
ปรับแต่งเคล็ดลับเครื่องมือแบบริช
ข้อมูลโค้ดนี้จะแสดงเคล็ดลับเครื่องมือที่สมบูรณ์พร้อมชื่อ การดำเนินการที่กำหนดเอง และเครื่องหมายคาเร็ต (ลูกศร) ที่กำหนดเองซึ่งแสดงที่ด้านบนของปุ่มไอคอนกล้อง
@Composable fun AdvancedRichTooltipExample( modifier: Modifier = Modifier, richTooltipSubheadText: String = "Custom Rich Tooltip", richTooltipText: String = "Rich tooltips support multiple lines of informational text.", richTooltipActionText: String = "Dismiss" ) { val tooltipState = rememberTooltipState() val coroutineScope = rememberCoroutineScope() TooltipBox( modifier = modifier, positionProvider = TooltipDefaults.rememberRichTooltipPositionProvider(), tooltip = { RichTooltip( title = { Text(richTooltipSubheadText) }, action = { Row { TextButton(onClick = { coroutineScope.launch { tooltipState.dismiss() } }) { Text(richTooltipActionText) } } }, ) { Text(richTooltipText) } }, state = tooltipState ) { IconButton(onClick = { coroutineScope.launch { tooltipState.show() } }) { Icon( imageVector = Icons.Filled.Camera, contentDescription = "Open camera" ) } } }
ประเด็นสำคัญเกี่ยวกับโค้ด
RichTooltipจะแสดงเคล็ดลับเครื่องมือพร้อมชื่อและการดำเนินการปิด- เมื่อเปิดใช้งาน ไม่ว่าจะด้วยการกดค้างหรือวางเคอร์เซอร์เมาส์เหนือเนื้อหา
TooltipBoxเคล็ดลับเครื่องมือจะแสดงเป็นเวลาประมาณ 1 วินาที คุณปิดเคล็ดลับเครื่องมือนี้ได้โดยแตะที่อื่นบนหน้าจอหรือใช้ปุ่มดำเนินการ - เมื่อมีการดำเนินการปิด ระบบจะเปิดใช้โครูทีนเพื่อเรียกใช้
tooltipState.dismissซึ่งจะช่วยยืนยันว่าการดำเนินการไม่ถูกบล็อกขณะที่เคล็ดลับเครื่องมือแสดงอยู่ onClick = coroutineScope.launch { tooltipState.show() } }จะเปิด Coroutine เพื่อแสดงเคล็ดลับเครื่องมือด้วยตนเองโดยใช้tooltipState.show- พารามิเตอร์
actionช่วยให้คุณเพิ่มองค์ประกอบแบบอินเทอร์แอกทีฟลงในเคล็ดลับเครื่องมือได้ เช่น ปุ่ม - พารามิเตอร์
caretSizeจะแก้ไขขนาดลูกศรของเคล็ดลับเครื่องมือ
ผลลัพธ์
ตัวอย่างนี้จะสร้างผลลัพธ์ต่อไปนี้
แหล่งข้อมูลเพิ่มเติม
- Material Design: เคล็ดลับเครื่องมือ