विभिन्न टेक्स्ट के साथ TextView करें


88

क्या अलग-अलग टेक्स्ट सेट करना संभव है एक टेक्स्ट व्यू में? मुझे पता है कि मैं टेक्स्ट स्टाइल का उपयोग कर बदल सकता हूं:

TextView textView = (TextView) findViewById(R.id.textView);
Spannable span = new SpannableString(textView.getText());
span.setSpan(arg0, 1, 10, arg3);
textView.setText(span)

मुझे पता है कि सीमा प्रारंभ ... पाठ का अंत मैं आकार बदलना चाहता हूं। लेकिन मैं के रूप में arg0और क्या उपयोग कर सकते हैं arg3?

जवाबों:


198

प्रयत्न

span.setSpan(new RelativeSizeSpan(0.8f), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

1
यह ठीक से दिखता है, लेकिन काम नहीं करता है। मेरे TextView में पूरे पाठ का आकार हर समय एक जैसा है।
वोयारू

1
हम्म शायद मैं अपने अद्यतन के लिए सेट (अपडेट) को सेटस्पैन () के बाद लागू करूं?
वूयारू

4
मेरी 3 टिप्पणियों के लिए क्षमा करें, लेकिन मैंने इस समस्या को हल कर दिया है। बस: textView.setText(span)
वोयारू

क्या आप जानते हैं कि मैं स्पैन के लिए रंग के साथ आकार कैसे जोड़ सकता हूं?
इयोनट नेगरू

23

मैं जवाब देना बहुत देर से जानता हूं लेकिन लोग अब भी एक ही सवाल कर सकते हैं। हालांकि मैंने इस पर बहुत संघर्ष किया। मान लें कि आपके पास ये दो तार आपके strings.xml फ़ाइल के अंदर हैं

 <string name="my_text">You will need a to complete this assembly</string>
 <string name="text_sub1">screwdriver, hammer, and measuring tape</string>

अब आपको अपनी शैली के अंदर उनके लिए दो शैली को परिभाषित करने की आवश्यकता है

<style name="style0">
    <item name="android:textSize">19sp</item>
    <item name="android:textColor">@color/standout_text</item>
    <item name="android:textStyle">bold</item>
</style>
<style name="style1">
    <item name="android:textSize">23sp</item>
    <item name="android:textColor">@color/standout_light_text</item>
    <item name="android:textStyle">italic</item>
</style>

अब आपकी जावा फ़ाइल से आपको इन दो शैली और तार को सिंगल टेक्स्ट व्यू पर लोड करने के लिए स्पैनबल का उपयोग करने की आवश्यकता है

SpannableString formattedSpan = formatStyles(getString(R.string.my_text), getString(R.string.text_sub0), R.style.style0, getString(R.string.main_text_sub1), R.style.style1);
textView.setText(formattedSpan, TextView.BufferType.SPANNABLE);

नीचे प्रारूपशिल्पी विधि है जो शैली लागू करने के बाद स्वरूपित स्ट्रिंग लौटाएगा

private SpannableString formatStyles(String value, String sub0, int style0, String sub1, int style1)
{ 
    String tag0 = "{0}";
    int startLocation0 = value.indexOf(tag0);
    value = value.replace(tag0, sub0);

    String tag1 = "{1}";
    int startLocation1 = value.indexOf(tag1);
    if (sub1 != null && !sub1.equals(""))
    { 
        value = value.replace(tag1, sub1);
    } 
    SpannableString styledText = new SpannableString(value);
    styledText.setSpan(new TextAppearanceSpan(getActivity(), style0), startLocation0, startLocation0 + sub0.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    if (sub1 != null && !sub1.equals(""))
    { 
        styledText.setSpan(new TextAppearanceSpan(getActivity(), style1), startLocation1, startLocation1 + sub1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    } 

    return styledText;
}

12

AbsoluteSizeSpan के साथ प्रयास करें

snackbarText.setSpan(new AbsoluteSizeSpan(fontsize, true), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

पूरा कोड है:

SpannableStringBuilder snackbarText = new SpannableStringBuilder();
snackbarText.append("Your text");
snackbarText.setSpan(new AbsoluteSizeSpan(fontsize, true), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Snackbar.make(getCurrentFocus(), snackbarText, Snackbar.LENGTH_LONG).setAction("Action", null).show();`
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.