android - SpannableString: क्या दो या दो से अधिक RelativeSizeSpans लागू करना संभव है?




(3)

मैं एक SpannableString के निर्माण की कोशिश कर रहा हूँ जैसे कि यह इस तरह दिखता है:

दो अक्षर (m, s) बाकी की तुलना में छोटे होने चाहिए। मैंने एक SpannableString में सभी पाठ रखने की कोशिश की है, और मैंने एक SpannableStringBuilder के माध्यम से दो SpannableStrings को संक्षिप्त करने का भी प्रयास किया है। एक स्पैनबल के लिए कोड इस तरह दिखता है:

spannable.setSpan(new RelativeSizeSpan(0.75f), spannable.length() - 1, spannable.length(), 0);

हालाँकि, केवल एक स्वरूपण लागू होता है - SpannableStringBuilder का उपयोग करते समय, केवल "m" छोटा होता है, और पूरे पाठ के लिए एक SpannableString का उपयोग करते समय, केवल "s" छोटा होता है।

डिबगिंग ने यह भी दिखाया कि Spannables केवल RelativeSizeSpan के एक उदाहरण को धारण करते हैं, जिसका अर्थ है कि एक प्रकार का केवल एक स्पैन हो सकता है। क्या यह सही या अपेक्षित व्यवहार है? क्या इसके बजाय TextViews को संक्षिप्त करना उचित होगा?

संपादित करें: वैसे, मैं प्रदर्शन कारणों (कई जीसी कॉल) के लिए एक HTML.fromHtml () कॉल को हटाने की कोशिश कर रहा हूं।


आप SpannableString की सरणी का उपयोग कर सकते हैं।

इस मामले में पसंद है:

TextView lblDescription=(TextView ) findViewById(R.id.lblDescription);

SpannableString[] finalString = new SpannableString[stringSplit.length];

lblDescription.setText(TextUtils.concat(finalString));

आपको 2 अलग SpannableString की आवश्यकता नहीं है। एक छोटा समाधान हो सकता है:

SpannableString span1 = new SpannableString("32m50s");

span1.setSpan(new RelativeSizeSpan(0.75f),  2, 3, 0);
span1.setSpan(new RelativeSizeSpan(0.75f),  5, 6, 0);

mTextView.setText(span1);

यदि आप अभी भी उत्तर की तलाश में हैं, तो मेरे पास एक समाधान हो सकता है। मुझे भी ऐसी ही समस्या थी। मैंने 2 SpannableString को TextUtils करने के लिए TextUtils का उपयोग किया।

यहाँ कुछ उदाहरण कोड है:

SpannableString span1 = new SpannableString("32m");
SpannableString span2 = new SpannableString("50s");

span1.setSpan(new RelativeSizeSpan(0.75f),  2, 3, 0);
span2.setSpan(new RelativeSizeSpan(0.75f),  2, 3, 0);

mTextView.setText(TextUtils.concat(span1," " ,span2));




spannable