2012-04-02 15 views
5

मैं पाठ के कई हिस्सों को व्यक्तिगत रूप से नीचे पाठ में उदाहरण के लिए क्लिक करने योग्य बनाना चाहते करने के लिए:एंड्रॉयड क्लिक करने योग्य TextView कैसे पाठ पर एकाधिक क्लिक करें क्षेत्र बनाने और पकड़ो क्षेत्र चयन

मौसम forcast हो जाओ एक दिन, दो दिन, सात दिन।

मैं एक दिन, दो दिन या सात दिन का पूर्वानुमान प्राप्त करने के लिए पाठ के अलग-अलग तीन अलग-अलग क्षेत्रों पर क्लिक करने में सक्षम होना चाहता हूं। मैं नहीं चाहता कि यह एक वेब पेज यूआरएल प्राप्त करे, लेकिन टेक्स्टव्यू दिखा रहे गतिविधि के अंदर टेक्स्ट के क्षेत्र पर क्लिक करें।

+0

के संभावित डुप्लिकेट (http://stackoverflow.com/questions/9584136/how-to-click-or-tap-on -एक-TextView-पाठ-ऑन-अलग-शब्द) – ForceMagic

उत्तर

12

आपको ClickableSpan का उपयोग करके पूरा करने में सक्षम होना चाहिए। असल में आपको SpannableStringBuilder बनाने की आवश्यकता है, टेक्स्ट पार्ट्स संलग्न करें और प्रत्येक क्लिक करने योग्य टेक्स्ट भाग के लिए एक अलग क्लिक करने योग्य SPAN सेट करें।

SpannableStringBuilder sb = new SpannableStringBuilder(); 
String regularText = "This text is "; 
String clickableText = "clickable"; 
sb.append(regularText); 
sb.append(clickableText); 
sb.setSpan(new ClickableSpan(), sb.length()-clickableText.length(), sb.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
TextView tv = ... 
tv.setText(sb); 

यह एक उदाहरण है जो एक क्लिक करने योग्य एसपीएन सेट करने का तरीका बताता है। जाहिर है, यह एक लूप में ऊपर करने के लिए और अधिक पुनरावृत्ति के साथ एक नया अवधि निर्धारित करने के लिए और अधिक समझ जाएगा।

हालांकि, चूंकि ClickableSpan एक अमूर्त वर्ग है, तो आपको पहले इसे अपने स्वयं के ठोस कार्यान्वयन के साथ विस्तारित करने की आवश्यकता होगी। अधिक विशेष रूप से, ऑनक्लिक विधि को क्लिक ईवेंट को संभालने के लिए लागू करने की आवश्यकता होगी।

इसके अलावा, MoveView में MovementMethod सेट करना न भूलें, उदा। LinkMovementMethod: [? क्लिक करने के लिए कैसे या अलग अलग शब्दों पर एक TextView पाठ पर टैप]

tv.setMovementMethod(LinkMovementMethod.getInstance()); 
संबंधित मुद्दे