2013-01-26 35 views
6

यह सवाल एक मेरा आखिरी सवाल का पालन है: मैं एक EditText में पाठ रेखांकित करने के लिए एक UnderlineSpan उपयोग कर रहा हूँ How to highlight text like Android spell-checker?अंडरलाइनस्पैन का रंग कैसे सेट करें?

लेकिन मैं रेखांकन की जरूरत रंग वर्तनी परीक्षक के इस स्क्रीन शॉट की तरह में होने के लिए:

enter image description here

+0

यह शायद सबसे अच्छा तुम कर दूँगा है बनाया है: http : //stackoverflow.com/questions/7684560/change-the-color-of-the-underline-in-android ... या, शायद: http://stackoverflow.com/questions/13238298/android-change-underline -color-from-an-edittext-गतिशील रूप से – Eric

+0

धन्यवाद लेकिन दुर्भाग्य से पहला समाधान काम नहीं करता (दोनों उत्तरों) और मैं दूसरे का उपयोग नहीं कर सकता मेरा ऐप एक कीबोर्ड है, जो सीधे संपादन टेक्स्ट तक नहीं पहुंच सकता है। –

+0

समस्या यह है कि कम से कम स्टॉक एंड्रॉइड पर ऐसा करने के लिए कोई एपीआई-समर्थित विधि नहीं है। – Eric

उत्तर

2

दुर्भाग्य से, आप एक अवधि के साथ पूरी तरह से ऐसा नहीं कर सकते - वहाँ आप क्या पूछना करने के लिए कोई सार्वजनिक तरीके हैं। पाठ रंग से स्वतंत्र टेक्स्टपेंट में अंडरलाइन रंग सेट करने का एक तरीका है (आप इसे सुझाव एसपीएन के स्रोत स्रोत में देख सकते हैं) लेकिन it's hidden

यदि आप एडिटटेक्स्ट तक पहुंच प्राप्त कर सकते हैं, तो आप स्पैन को संभाल सकते हैं और खुद को रेखांकित कर सकते हैं, लेकिन अन्यथा आप भाग्य से बाहर हैं।

0

यह मैं कैसे यह काम

Spanned part_1 = Html.fromHtml(getString(R.string.part1)); 
Spanned part_2 = Html.fromHtml("<u><font color='#2eb6f0'>Text in blue</font></u>"); 
Spanned part_3 = Html.fromHtml(getString(R.string.part3)); 
Spanned output = (Spanned) TextUtils.concat(part_1, part_2, part_3); 

textview.setText(output, TextView.BufferType.SPANNABLE); 
1

यहाँ समारोह है जो आप पाठ के नीचे रेखा का रंग सेट करने के लिए उपयोग कर सकते हैं

public void addUnderLineLink(TextView mTextView) { 
    if (mTextView != null) { 
     SpannableString content = new SpannableString(mTextView.getText().toString()); 
     UnderlineSpan us=new UnderlineSpan(); 
     TextPaint tp=new TextPaint(); 
     tp.setColor(ContextCompat.getColor(getContext(),R.color.white)); 
     us.updateDrawState(tp); 
     content.setSpan(us, 0, mTextView.getText().toString().length(), 0); 
     mTextView.setText(content); 
    } 
}