2012-05-26 12 views
5

मुझे निम्न समस्या मिली है: मैं पर कॉल करके एक साथ कई EditText नियंत्रणों में टेक्स्ट को हाइलाइट करने का प्रयास कर रहा हूं, लेकिन चयन केवल केंद्रित दृश्य पर दिखाई देता है।एकाधिक संपादन टेक्स्ट नियंत्रण में पाठ को हाइलाइट करें

क्या फ़ोकस करने का कोई तरीका है, किसी फ़ोकस किए गए EditText में टेक्स्ट को हाइलाइट करने के लिए? शायद onDraw() विधियों को अधिभारित करके?

+1

'सेट चयन()' टेक्स्ट को हाइलाइट नहीं करना है ", लेकिन कट/कॉपी/पेस्ट ऑपरेशंस के लिए चयन सेट करना है। इसलिए, यह केवल फोकस के साथ 'एडिटटेक्स्ट' पर समझ में आता है। एकाधिक 'संपादन टेक्स्ट' विजेट में टेक्स्ट को हाइलाइट करने का आपका उद्देश्य क्या है? – CommonsWare

+0

मुझे पता है, लेकिन इसकी (जहां तक ​​मुझे पता है?) एक संपादन टेक्स्ट नियंत्रण में पाठ को चिह्नित करने का एकमात्र तरीका है। मैं बस रीयलटाइम में कुछ इनपुट स्ट्रिंग्स को कन्वर्ट करना चाहता हूं, और यदि आप इनपुट स्ट्रिंग के एक सेक्शन पर क्लिक करते हैं, तो मैं आउटपुट स्ट्रिंग के उचित सेक्शन को हाइलाइट करना चाहता हूं। –

उत्तर

4

मुझे पता है, लेकिन इसकी (जहां तक ​​मुझे पता है?) एक संपादन टेक्स्ट नियंत्रण में पाठ को चिह्नित करने का एकमात्र तरीका है।

EditText Spannable वस्तुओं का समर्थन करता है, तो आप पाठ (उदाहरण के लिए पृष्ठभूमि रंग) अपने आप पर प्रकाश डाला आवेदन कर सकते हैं।

This sample project एक खोज फ़ील्ड प्रदर्शित करता है जो खोज परिणामों के आधार पर टेक्स्ट के बड़े हिस्से में पृष्ठभूमि रंग लागू करता है। ,

private void searchFor(String text) { 
    TextView prose=(TextView)findViewById(R.id.prose); 
    Spannable raw=new SpannableString(prose.getText()); 
    BackgroundColorSpan[] spans=raw.getSpans(0, 
              raw.length(), 
              BackgroundColorSpan.class); 

    for (BackgroundColorSpan span : spans) { 
     raw.removeSpan(span); 
    } 

    int index=TextUtils.indexOf(raw, text); 

    while (index >= 0) { 
     raw.setSpan(new BackgroundColorSpan(0xFF8B008B), index, index 
      + text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
     index=TextUtils.indexOf(raw, text, index + text.length()); 
    } 

    prose.setText(raw); 
    } 

नोट हालांकि, कि अपने "उत्पादन स्ट्रिंग" शायद एक TextView, न कि एक EditText होना चाहिए: महत्वपूर्ण हिस्सा searchFor() तरीका है। EditText इनपुट के लिए है, आउटपुट नहीं।

+0

वही था जो मैं खोज रहा था, धन्यवाद! :) –

+0

धन्यवाद @ कॉमन्सवेयर! – HeavyE

संबंधित मुद्दे