मेरे पास एक TextView है जो मूल HTML का प्रतिपादन कर रहा है, जिसमें 2+ लिंक हैं। मुझे लिंक पर क्लिक कैप्चर करने और लिंक खोलने की आवश्यकता है - मेरे अपने आंतरिक WebView में (डिफ़ॉल्ट ब्राउज़र में नहीं)।
लिंक रेंडरिंग को संभालने के लिए सबसे आम तरीका इस तरह लगता है:
String str_links = "<a href='http://google.com'>Google</a><br /><a href='http://facebook.com'>Facebook</a>";
text_view.setLinksClickable(true);
text_view.setMovementMethod(LinkMovementMethod.getInstance());
text_view.setText( Html.fromHtml( str_links ) );
हालाँकि, यह लिंक डिफ़ॉल्ट आंतरिक वेब ब्राउज़र में खुलने का कारण बनता है ("पूर्ण क्रिया का उपयोग करके ..." संवाद)।
मैंने एक onClickListener को लागू करने की कोशिश की, जो लिंक को क्लिक करने पर ठीक से चालू हो जाती है, लेकिन मुझे नहीं पता कि किस तरह से निर्धारित किया जाए कि किस लिंक पर क्लिक किया गया ...
text_view.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// what now...?
}
});
वैकल्पिक रूप से, मैंने एक कस्टम LinkMovementMethod वर्ग बनाने और onTouchEvent को लागू करने का प्रयास किया ...
public boolean onTouchEvent(TextView widget, Spannable text, MotionEvent event) {
String url = text.toString();
// this doesn't work because the text is not necessarily a URL, or even a single link...
// eg, I don't know how to extract the clicked link from the greater paragraph of text
return false;
}
विचार?
उदाहरण समाधान
मैं एक समाधान के साथ आया था जो एक HTML स्ट्रिंग से लिंक को पार्स करता है और उन्हें क्लिक करने योग्य बनाता है, और फिर आपको URL पर प्रतिक्रिया करने देता है।
span.getURL()
"।) आप इसे उत्तर के रूप में भी पोस्ट कर सकते हैं, क्योंकि यह वर्तमान में स्वीकृत उत्तर से बेहतर है!