दिलचस्प पोस्ट
मैं उस यूआरएल को कैसे तय कर सकता हूं जो स्थानीय जीआईटी भंडार को मूल रूप से क्लोन किया गया था? जब रेलवे में "has_many: through" संबंध का उपयोग करना चाहिए क्या लिंकेडएचशैप मैप ऑब्जेक्ट से चाबियाँ और मूल्यों की वापसी के लिए गारंटीकृत आदेश है? हमें एंड्रॉइड में फ़ॉन्ट आकार के लिए एसपी का इस्तेमाल क्यों करना चाहिए? मैं स्टैकट्र्रेस या प्रतिबिंब का उपयोग करके किसी विधि का कॉलर कैसे प्राप्त करूं? फ़्लोट का उपयोग "अतिभारित कार्य करने के लिए कॉल अस्पष्ट" त्रुटि देता है रेल मॉडल, दृश्य, नियंत्रक, और हेल्पर: क्या जाता है जहां? एंड्रॉइड मल्टीडीएक्स सपोर्ट लाइब्रेरी एक्लिप्स से अन्य नामस्थानों से वस्तुओं का उपयोग कैसे करें और PHP में नामस्थान कैसे आयात करें ASP.NET वेब अनुप्रयोग संदेश बॉक्स बिटमैप getWidth गलत मान देता है क्या कोई नक्शा <स्ट्रिंग,?> प्राप्त करने और मामले की अनदेखी करने का एक अच्छा तरीका है? सूची दृश्य सूची को अद्यतन करने के बाद सूची के अंत तक स्क्रॉल करें कुंजी प्रेस या जावास्क्रिप्ट के साथ एक क्लिक अनुकरण करने का एक तरीका है? फोरट्रान अपरिवर्तित फ़ाइल प्रारूप

TextView / EditText में नल पर एक शब्द चुनें

एंड्रॉइड में TextView / EditText में नल पर किसी शब्द का चयन कैसे करें मेरे पास TextView / EditText टेक्स्ट में कुछ पाठ है और जब उपयोगकर्ता किसी शब्द पर टैप करता है, तो मैं उस शब्द को चुना जाना चाहता हूं और उसके बाद जब मैं विधि से प्राप्त करेंइसेक्टेड टेक्स्ट () प्राप्त करता हूं, तो मुझे मुझे चयनित शब्द वापस करना चाहिए। किसी भी सहायता की सराहना की जाएगी।

मेरा लक्ष्य कुछ क्रिया करने के लिए है जब उपयोगकर्ता TextView / EditText में किसी विशिष्ट शब्द पर नल EditText

Solutions Collecting From Web of "TextView / EditText में नल पर एक शब्द चुनें"

BreakIterator का उपयोग करने के लिए एक और बेहतर तरीका है:

 private void init() { String definition = "Clickable words in text view ".trim(); TextView definitionView = (TextView) findViewById(R.id.text); definitionView.setMovementMethod(LinkMovementMethod.getInstance()); definitionView.setText(definition, BufferType.SPANNABLE); Spannable spans = (Spannable) definitionView.getText(); BreakIterator iterator = BreakIterator.getWordInstance(Locale.US); iterator.setText(definition); int start = iterator.first(); for (int end = iterator.next(); end != BreakIterator.DONE; start = end, end = iterator .next()) { String possibleWord = definition.substring(start, end); if (Character.isLetterOrDigit(possibleWord.charAt(0))) { ClickableSpan clickSpan = getClickableSpan(possibleWord); spans.setSpan(clickSpan, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } } } private ClickableSpan getClickableSpan(final String word) { return new ClickableSpan() { final String mWord; { mWord = word; } @Override public void onClick(View widget) { Log.d("tapped on:", mWord); Toast.makeText(widget.getContext(), mWord, Toast.LENGTH_SHORT) .show(); } public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); } }; } 

पुराने उत्तर

मैं अपनी खुद की गतिविधि में क्लिक को संभालना चाहता था मैंने इसे निम्नलिखित कोड द्वारा हल किया:

 private void init(){ String definition = "Clickable words in text view ".trim(); TextView definitionView = (TextView) findViewById(R.id.definition); definitionView.setMovementMethod(LinkMovementMethod.getInstance()); definitionView.setText(definition, BufferType.SPANNABLE); Spannable spans = (Spannable) definitionView.getText(); Integer[] indices = getIndices( definitionView.getText().toString(), ' '); int start = 0; int end = 0; // to cater last/only word loop will run equal to the length of indices.length for (int i = 0; i <= indices.length; i++) { ClickableSpan clickSpan = getClickableSpan(); // to cater last/only word end = (i < indices.length ? indices[i] : spans.length()); spans.setSpan(clickSpan, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); start = end + 1; } } private ClickableSpan getClickableSpan(){ return new ClickableSpan() { @Override public void onClick(View widget) { TextView tv = (TextView) widget; String s = tv .getText() .subSequence(tv.getSelectionStart(), tv.getSelectionEnd()).toString(); Log.d("tapped on:", s); } public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); } }; } public static Integer[] getIndices(String s, char c) { int pos = s.indexOf(c, 0); List<Integer> indices = new ArrayList<Integer>(); while (pos != -1) { indices.add(pos); pos = s.indexOf(c, pos + 1); } return (Integer[]) indices.toArray(new Integer[0]); } 

Linkify का उपयोग करें, किसी शब्द के क्लिक पर अपना रूटीन लागू करने के लिए अपने स्वयं के नियमित अभिव्यक्ति का उपयोग करें

विकीवर्ल्ड उदाहरण और प्रासंगिक ब्लॉगपोस्ट के लिए यहां देखें