autoLink
विशेषता एक कष्टप्रद बग है: यदि आप फोन नंबर पर अपने उदाहरण में क्लिक करें, फिर वापस लौटने और दूसरा यूआरएल लिंक पर क्लिक करें - यह फोन नंबर फिर से खुल जाएगा। यह विशेषता कई लिंक के साथ इतना बुरा काम करता है, कि मैं अपने ही वर्ग को लागू किया है, यहाँ आप एक्सएमएल-लेआउट में मेरी ClickableLinksTextView
वर्ग द्वारा अपने TextView
वर्ग की जगह और कोड बदल सकते हैं Github ClickableLinksTextView.java
अपने उदाहरण में पर कड़ी है इस तरह:
ClickableLinksTextView textView = (ClickableLinksTextView)view.findViewById(R.id.mytext);
textView.setText("My text: +4412345678 Go to website: www.google.com Blah blah");
Linkify.addLinks(textView, Linkify.ALL);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
textView.setMovementMethod(ArrowKeyMovementMethod.getInstance());
textView.setTextIsSelectable(true);
// the autoLink attribute must be removed, if you hasn't set it then ok, otherwise call textView.setAutoLink(0);
}
अपने प्रश्न में इस मुद्दे का मूल कारण यह है कि LinkMovementMethod
वर्ग और textIsSelectable
विशेषता बिल्कुल संगत नहीं हैं, यहां तक कि Android ओएस डेवलपर्स the Android OS source code में यह स्वीकार करते है।
पाठ चयन का समर्थन करने वाले पाठ के लिए आंदोलन विधि को न बदलें क्योंकि यह मनमाने ढंग से कर्सर विस्थापन को रोक देगा।
पाठ दृश्य चयन है, तो केवल 2 सही आंदोलन विधि मूल्यों null
और ArrowKeyMovementMethod
हैं। यही कारण है कि मैंने अपने उदाहरण में स्पष्ट रूप से ArrowKeyMovementMethod
सेट किया है, क्योंकि Linkify.addLinks
गलत आंदोलन विधि सेट करता है और मुझे इसे वापस करना चाहिए।
ऑटोलिंक विशेषता की बग के रूप में, ऐसा इसलिए है क्योंकि एंड्रॉइड डेवलपर्स ने लिंक पहचान को सही तरीके से कॉपी नहीं किया है। आप @cheng यांग के जवाब में कोड उदाहरण देख सकते हैं, कोड केवल पहला लिंक लेता है इससे कोई फर्क नहीं पड़ता कि आपके पास कितने हैं।
आप क्या कर रहे हैं जो काम नहीं कर रहा है? क्या इसे केवल काम को जोड़ने की कोशिश कर रहा है? –
जब मैं इसे लिंक करता हूं तो मैं यूआरएल और फोन पर क्लिक कर सकता हूं। लेकिन जब मैं इसे चुनने योग्य चयन करता हूं तो अब – pixel