เปิดใช้การโต้ตอบของผู้ใช้

Jetpack Compose ช่วยให้การโต้ตอบแบบละเอียดใน Text เป็นไปได้ ตอนนี้การเลือกข้อความมีความยืดหยุ่นมากขึ้นและทำได้ในเลย์เอาต์แบบคอมโพสได้ การโต้ตอบของผู้ใช้กับข้อความแตกต่างจากเลย์เอาต์แบบคอมโพสิเบิลอื่นๆ เนื่องจากคุณไม่สามารถเพิ่มตัวแก้ไขลงในส่วนหนึ่งของคอมโพสิเบิล Text หน้านี้จะไฮไลต์ API ที่เปิดใช้การโต้ตอบของผู้ใช้

เลือกข้อความ

โดยค่าเริ่มต้น คอมโพสิเบิลจะเลือกไม่ได้ ซึ่งหมายความว่าผู้ใช้จะเลือกและคัดลอกข้อความจากแอปไม่ได้ หากต้องการเปิดใช้การเลือกข้อความ ให้ตัดองค์ประกอบข้อความด้วยคอมโพสิเบิล SelectionContainer ดังนี้

@Composable
fun SelectableText() {
    SelectionContainer {
        Text("This text is selectable")
    }
}

ข้อความสั้นๆ ที่ผู้ใช้เลือก

คุณอาจต้องการปิดใช้การเลือกในบางส่วนของพื้นที่ที่เลือกได้ โดยคุณจะต้องตัดส่วนที่ไม่เลือกได้ด้วยคอมโพสิเบิล DisableSelection ดังนี้

@Composable
fun PartiallySelectableText() {
    SelectionContainer {
        Column {
            Text("This text is selectable")
            Text("This one too")
            Text("This one as well")
            DisableSelection {
                Text("But not this one")
                Text("Neither this one")
            }
            Text("But again, you can select this one")
            Text("And this one too")
        }
    }
}

ข้อความที่ยาวขึ้น ผู้ใช้พยายามเลือกทั้งข้อความ แต่เนื่องจากมีการใช้ DisableSelection กับ 2 บรรทัด ระบบจึงไม่เลือกบรรทัดเหล่านั้น

สร้างส่วนของข้อความที่คลิกได้โดยใช้ LinkAnnotation

หากต้องการฟังการคลิก Text ให้เพิ่มตัวแก้ไข clickable อย่างไรก็ตาม คุณอาจต้องการแนบข้อมูลเพิ่มเติมไว้กับส่วนใดส่วนหนึ่งของค่า Text เช่น URL ที่แนบมากับคําหนึ่งๆ เพื่อเปิดในเบราว์เซอร์ ในกรณีเช่นนี้ คุณต้องใช้ LinkAnnotation ซึ่งเป็นคำอธิบายประกอบที่แสดงถึงส่วนที่คลิกได้ของข้อความ

LinkAnnotation ช่วยให้คุณแนบ URL กับส่วนหนึ่งของคอมโพสิเบิล Text ที่เปิดโดยอัตโนมัติเมื่อคลิกได้ ดังที่แสดงในข้อมูลโค้ดต่อไปนี้

นอกจากนี้ คุณยังกําหนดค่าการดําเนินการที่กำหนดเองเพื่อตอบสนองต่อการคลิกของผู้ใช้ในส่วนหนึ่งของคอมโพสิเบิล Text ได้ด้วย ในสnippet ต่อไปนี้ เมื่อผู้ใช้คลิก "Jetpack Compose" ระบบจะแสดงลิงก์และบันทึกเมตริกหากผู้ใช้คลิกลิงก์