2010-10-27 17 views
48
text = text + CepVizyon.getPhoneCode() + "\n\n" 
      + getText(R.string.currentversion) + CepVizyon.getLicenseText(); 
    activationText.setText(text); 
myTextView.setText(text); 

मैं CepVizyon.getPhoneCode() की स्ट्रिंग के लिए रंग बदलना चाहता हूं ... मैं यह कैसे कर सकता हूं ??मैं टेक्स्ट व्यू का रंग भाग कैसे बदल सकता हूं?

+0

इसे देखें: http://stackoverflow.com/questions/ 4897349/एंड्रॉइड-कलरिंग-पार्ट-ऑफ-ए-स्ट्रिंग-यूज-टेक्स्टव्यू-सेटटेक्स्ट –

+0

[संभावित रूप से एंड्रॉइड में टेक्स्ट व्यू अवधि का सेट रंग] का संभावित डुप्लिकेट (http://stackoverflow.com/questions/3282940/set-color-of -टेक्स्टव्यू-स्पैन-इन-एंड्रॉइड) – Suragch

+0

@ सुरागच आप कैसे जानते हैं कि पोस्ट मुझसे बड़ा है? :) – atasoyh

उत्तर

104

Spannable अधिक लचीला है:

String text2 = text + CepVizyon.getPhoneCode() + "\n\n" 
      + getText(R.string.currentversion) + CepVizyon.getLicenseText(); 

Spannable spannable = new SpannableString(text2); 

spannable.setSpan(new ForegroundColorSpan(Color.WHITE), text.length(), (text + CepVizyon.getPhoneCode()).length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

myTextView.setText(spannable, TextView.BufferType.SPANNABLE); 
+1

इस उत्तर के लिए धन्यवाद! यह आईओएस में एनएसएट्रिब्यूटेड स्ट्रिंग की तरह है :) और भी लचीला होने के लिए, text2.enexOf (CepVizyon.getPhoneCode()) द्वारा text.lenght को प्रतिस्थापित करें जो आपको स्ट्रिंग के पहले भाग को नहीं जानने की अनुमति देता है। – iGranDav

+1

आपको 'text' लम्बाई के बाद '()' रखना चाहिए क्योंकि 'लंबाई' एक विधि नहीं है। यह स्वयं ही करेगा लेकिन संपादन कम से कम 6 वर्णों का होना चाहिए :) – MSX

+0

यह अब तक का सबसे अच्छा जवाब है। –

-3

एक तरीका myTextView को कुछ अलग TextViews पर विभाजित करना है, जिनमें से एक केवल फोन कोड के लिए होगा। फिर इस विशिष्ट TextView का रंग नियंत्रित करना बहुत सीधी-आगे है।

+3

नहीं, गधे में दर्द। एक स्पैन करने योग्य का उपयोग सही तरीका है। –

54
myTextView.setText(Html.fromHtml(text + "<font color=white>" + CepVizyon.getPhoneCode() + "</font><br><br>" 
      + getText(R.string.currentversion) + CepVizyon.getLicenseText())); 
12

मनीष के उत्तर के संबंध में, यह काम करेगा लेकिन आपको रंग विशेषता के लिए उद्धरण जोड़ने और भागने की आवश्यकता है।

myTextView.setText(Html.fromHtml(text + "<font color=\"#FFFFFF\">" + CepVizyon.getPhoneCode() + "</font><br><br>" 
      + getText(R.string.currentversion) + CepVizyon.getLicenseText())); 
5

यह मेरे लिए अच्छा है!

  Spannable spannable = new SpannableString("ABC In-Network DEF"); 
      String str = spannable.toString(); 
      iStart = str.indexOf("In-Network"); 
      iEnd = iStart + 10;/*10 characters = in-network. */ 

      SpannableString ssText = new SpannableString(spannable); 
      ClickableSpan clickableSpan = new ClickableSpan() { 
       @Override 
       public void onClick(View widget) { 
        //your code at here. 
       } 

       @Override 
       public void updateDrawState(TextPaint ds) { 
        super.updateDrawState(ds); 
        ds.setUnderlineText(true); 
        ds.setColor(getResources().getColor(R.color.green)); 
       } 
      }; 
      ssText.setSpan(clickableSpan, iStart, iEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
      mTextView.setText(ssText); 
      mTextView.setMovementMethod(LinkMovementMethod.getInstance()); 
      mTextView.setHighlightColor(Color.TRANSPARENT); 
      mTextView.setEnabled(true); 
7

आप स्थिर पाठ कि रंग की जरूरत है, तो आप तार फ़ाइल के माध्यम से किसी भी कोड के बिना इसे जोड़ सकते हैं:

<string name="already_have_an_account">Already have an account? <font color='#01C6DB'>Login</font></string> 
तो

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="64dp" 
    android:text="@string/already_have_an_account"/> 

परिणाम

enter image description here

यह सुनिश्चित नहीं करता कि यह कौन से एपीआई संस्करणों पर काम करता है, लेकिन अब तक परीक्षण किए गए एपीआई 1 9 के लिए काम नहीं करता है, इसलिए शायद हाल ही के कुछ एपीआई संस्करणों में से कुछ केवल

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