दिलचस्प पोस्ट
जावास्क्रिप्ट में लूप के साथ ईवेंट हैंडलर्स कैसे उत्पन्न करें? मज़बूती से सी-स्टाइल सरणी का आकार कैसे प्राप्त करें? पायथन में ट्रिनकेट () विधि का व्यवहार जावा: माउसड्राग और एक ग्राफिकल इंटरफ़ेस में घूम रहा है क्या सी ++ 11 में त्रि-सुरक्षित धागा सुरक्षित है? संपत्ति द्वारा फ़िल्टर करें डाटाबेस में टैग्स को स्टोर करने का सबसे कारगर तरीका क्या है? एपीएनएस (ऐप्पल पुश नोटिफिकेशन सर्विस) विश्वसनीयता एकाधिक रिकॉर्ड में स्ट्रिंग को बदलने के लिए मैं अपने एसक्यूएल को कैसे बदल सकता हूँ? घुमाए गए आयताकार में सबसे बड़ा आयत की गणना करें क्लिक पर जावास्क्रिप्ट शो तत्व किसी दूसरे निर्माता से कॉल करें मेरे एंड्रॉइड एप्लिकेशन में INSTALL_PARSE_FAILED_MANIFEST_MALFORMED कैसे ठीक करें I एनजी-क्लिक पर पुष्टिकरण संवाद – अंगुलेजएस SQLite – ORDER BY RAND ()

एंड्रॉइड: TextView.setText () का उपयोग कर एक स्ट्रिंग का रंग हिस्सा?

मैं TextView दृश्य के पाठ को .setText ("") विधि के माध्यम से बदलना चाहता हूं, जबकि पाठ के एक भाग को रंग दे रहा है (या इसे बोल्ड, इटैलिक, पारदर्शी, आदि बनाकर) और शेष नहीं। उदाहरण के लिए:

title.setText("Your big island <b>ADVENTURE!</b>"; 

मुझे पता है कि उपरोक्त कोड गलत है लेकिन यह स्पष्ट करता है कि मैं क्या हासिल करना चाहता हूं। यह मैं कैसे करूंगा?

वेब के समाधान से एकत्रित समाधान "एंड्रॉइड: TextView.setText () का उपयोग कर एक स्ट्रिंग का रंग हिस्सा?"

स्पेन्स का उपयोग करें

उदाहरण:

 final SpannableStringBuilder sb = new SpannableStringBuilder("your text here"); // Span to set text color to some RGB value final ForegroundColorSpan fcs = new ForegroundColorSpan(Color.rgb(158, 158, 158)); // Span to make text bold final StyleSpan bss = new StyleSpan(android.graphics.Typeface.BOLD); // Set the text color for first 4 characters sb.setSpan(fcs, 0, 4, Spannable.SPAN_INCLUSIVE_INCLUSIVE); // make them also bold sb.setSpan(bss, 0, 4, Spannable.SPAN_INCLUSIVE_INCLUSIVE); yourTextView.setText(sb); 
 title.setText(Html.fromHtml("Your big island <b>ADVENTURE!</b>")); 

मुझे आशा है यह आपकी सहायता करेगी (यह बहु भाषा के साथ काम करता है)

 <string name="test_string" ><![CDATA[<font color="%1$s"><b>Test/b></font>]]> String</string> 

और आपके जावा कोड पर, आप यह कर सकते हैं:

 int color = context.getResources().getColor(android.R.color.holo_blue_light); String string = context.getString(R.string.test_string, color); textView.setText(Html.fromHtml(string)); 

इस तरह, केवल "टेस्ट" भाग रंगीन (और बोल्ड) होगा।

यहाँ एक उदाहरण है जो एक शब्द (केस असंवेदनशील) की सभी घटनाओं को देखेंगे, और उन्हें लाल रंग देगा:

 String notes = "aaa AAA xAaax abc aaA xxx"; SpannableStringBuilder sb = new SpannableStringBuilder(notes); Pattern p = Pattern.compile("aaa", Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(notes); while (m.find()){ //String word = m.group(); //String word1 = notes.substring(m.start(), m.end()); sb.setSpan(new ForegroundColorSpan(Color.rgb(255, 0, 0)), m.start(), m.end(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); } editText.setText(sb); 

आप पाठ के कुछ हिस्सों को कुछ पहलुओं को देने के लिए Spannable का उपयोग कर सकते हैं। यदि आप चाहें तो मैं एक उदाहरण देख सकता हूँ

आह, यहां से स्टैकहोवरफ्लो पर।

 TextView TV = (TextView)findViewById(R.id.mytextview01); Spannable WordtoSpan = new SpannableString("I know just how to whisper, And I know just how to cry,I know just where to find the answers"); WordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 15, 30, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); TV.setText(WordtoSpan); 

यदि आप HTML का उपयोग करना चाहते हैं, तो आपको TextView.setText(Html.fromHtml(String htmlString))

यदि आप अक्सर / बार-बार ऐसा करना चाहते हैं, तो मैंने लिखा एक क्लास ( स्पैनैबलबिल्डर ) पर एक नजर डाल सकता है, क्योंकि Html.fromHtml() बहुत ही कुशल नहीं है (यह एक बड़ी एक्सएमएल पार्सिंग मशीन का उपयोग कर रहा है)। इस ब्लॉग पोस्टिंग में वर्णन किया गया है।

आप दो या अधिक Spans को जोड़ सकते हैं इस तरह से लंबाई मूल्य का उपयोग कर गतिशील पाठ रंग आसान है।

 SpannableStringBuilder span1 = new SpannableStringBuilder("Android"); ForegroundColorSpan color1=new ForegroundColorSpan(getResources().getColor(R.color.colorPrimary)); span1.setSpan(color1, 0, span1.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); SpannableStringBuilder span2 = new SpannableStringBuilder("Love"); ForegroundColorSpan color2=new ForegroundColorSpan(getResources().getColor(R.color.colorSecondary)); span2.setSpan(color2, 0, span2.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); Spanned concatenated=(Spanned) TextUtils.concat(span1," => ",span2); SpannableStringBuilder result = new SpannableStringBuilder(concatenated); TextView tv = (TextView) rootView.findViewById(R.id.my_texview); tv.setText(result, TextView.BufferType.SPANNABLE); 

इस कोड का उपयोग इसके सहायक

 TextView txtTest = (TextView) findViewById(R.id.txtTest); txtTest.setText(Html.fromHtml("This is <font color="#ff4343">Red</font> Color!")); 
  String str1 = "If I forget my promise to "; String penalty = "Eat breakfast every morning,"; String str2 = " then I "; String promise = "lose my favorite toy"; String strb = "<u><b><font color='#081137'>"+ penalty +",</font></b></u>"; String strc = "<u><b><font color='#081137'>"+ promise + "</font></b></u>"; String strd = str1 +strb+ str2 + strc; tv_notification.setText(Html.fromHtml(strd)); 
 public static void setColorForPath(Spannable spannable, String[] paths, int color) { for (int i = 0; i < paths.length; i++) { int indexOfPath = spannable.toString().indexOf(paths[i]); if (indexOfPath == -1) { return; } spannable.setSpan(new ForegroundColorSpan(color), indexOfPath, indexOfPath + paths[i].length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } } 

का उपयोग करते हुए

 Spannable spannable = new SpannableString("Your big island ADVENTURE"); Utils.setColorForPath(spannable, new String[] { "big", "ADVENTURE" }, Color.BLUE); textView.setText(spannable); 

यहां छवि विवरण दर्ज करें