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

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")
        }
    }
}

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

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

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

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

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