উত্তর:
আপনি মূলত আপনার স্ট্রিং রিসোর্সে html ট্যাগ ব্যবহার করতে পারেন:
<resource>
<string name="styled_welcome_message">We are <b><i>so</i></b> glad to see you.</string>
</resources>
এবং এইচটিএমএল.ফর্মএইচটিএমএল ব্যবহার করুন বা স্প্যানিয়েবল ব্যবহার করুন, আমার পোস্ট করা লিঙ্কটি চেক করুন।
পুরানো অনুরূপ প্রশ্ন: টেক্সটভিউয়ের ভিতরে কি একাধিক শৈলী থাকা সম্ভব?
Html.fromHtml()
... <![CDATA[<b><i>so</i></b>]]>
...
getText(R.string.whatever)
পরিবর্তে এটি পুনরুদ্ধার করেছেনgetString(R.string.whatever)
name
বদলে থাকার কথা না id
?
Html.fromHtml
বা প্রয়োজন নেই Spannable
। getText(R.string.whatever)
উল্লিখিত @ ও এন্ডিজারদের মতো কেবল ব্যবহার করুন ।
স্ট্রিং রিসোর্সের ভিতরে এইচটিএমএল ট্যাগ ব্যবহার করুন: -
<resources>
<string name="string_resource_name"><![CDATA[<b> Your text </b>]]> </string>
</resources>
এবং স্ট্রিং রিসোর্স থেকে গা bold় পাঠ্য যেমন:
private Spanned getSpannedText(String text) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
return Html.fromHtml(text, Html.FROM_HTML_MODE_COMPACT);
} else {
return Html.fromHtml(text);
}
}
String s = format(context.getResources().getString(R.string.string_resource_name));
textView.setText(getSpannedText(s));
ডেভিড ওলসন যেমন বলেছেন, আপনি আপনার স্ট্রিং রিসোর্সে HTML ব্যবহার করতে পারেন:
<resource>
<string name="my_string">A string with <i>actual</i> <b>formatting</b>!</string>
</resources>
তারপরে আপনি যদি তার getText(R.string.my_string)
পরিবর্তে ব্যবহার করেন তবে এম্বেড থাকা ফর্ম্যাটিংটিতে থাকা পরিবর্তে getString(R.string.my_string)
ফিরে আসুন ।CharSequence
String
কোটলিনে, আপনি সংস্থানগুলিতে ক্রিয়াকলাপ তৈরি করতে পারেন (ক্রিয়াকলাপ | টুকরা | প্রসঙ্গ) যা আপনার স্ট্রিংটিকে এইচটিএমএল স্প্যানে রূপান্তর করবে will
যেমন
fun Resources.getHtmlSpannedString(@StringRes id: Int): Spanned = getString(id).toHtmlSpan()
fun Resources.getHtmlSpannedString(@StringRes id: Int, vararg formatArgs: Any): Spanned = getString(id, *formatArgs).toHtmlSpan()
fun Resources.getQuantityHtmlSpannedString(@PluralsRes id: Int, quantity: Int): Spanned = getQuantityString(id, quantity).toHtmlSpan()
fun Resources.getQuantityHtmlSpannedString(@PluralsRes id: Int, quantity: Int, vararg formatArgs: Any): Spanned = getQuantityString(id, quantity, *formatArgs).toHtmlSpan()
fun String.toHtmlSpan(): Spanned = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Html.fromHtml(this, Html.FROM_HTML_MODE_LEGACY)
} else {
Html.fromHtml(this)
}
ব্যবহার
//your strings.xml
<string name="greeting"><![CDATA[<b>Hello %s!</b><br>]]>This is newline</string>
//in your fragment or activity
resources.getHtmlSpannedString(R.string.greeting, "World")
আরও এক্সটেনশানগুলি সম্পাদনা করুন
fun Context.getHtmlSpannedString(@StringRes id: Int): Spanned = getString(id).toHtmlSpan()
fun Context.getHtmlSpannedString(@StringRes id: Int, vararg formatArgs: Any): Spanned = getString(id, *formatArgs).toHtmlSpan()
fun Context.getQuantityHtmlSpannedString(@PluralsRes id: Int, quantity: Int): Spanned = resources.getQuantityString(id, quantity).toHtmlSpan()
fun Context.getQuantityHtmlSpannedString(@PluralsRes id: Int, quantity: Int, vararg formatArgs: Any): Spanned = resources.getQuantityString(id, quantity, *formatArgs).toHtmlSpan()
fun Activity.getHtmlSpannedString(@StringRes id: Int): Spanned = getString(id).toHtmlSpan()
fun Activity.getHtmlSpannedString(@StringRes id: Int, vararg formatArgs: Any): Spanned = getString(id, *formatArgs).toHtmlSpan()
fun Activity.getQuantityHtmlSpannedString(@PluralsRes id: Int, quantity: Int): Spanned = resources.getQuantityString(id, quantity).toHtmlSpan()
fun Activity.getQuantityHtmlSpannedString(@PluralsRes id: Int, quantity: Int, vararg formatArgs: Any): Spanned = resources.getQuantityString(id, quantity, *formatArgs).toHtmlSpan()
fun Fragment.getHtmlSpannedString(@StringRes id: Int): Spanned = getString(id).toHtmlSpan()
fun Fragment.getHtmlSpannedString(@StringRes id: Int, vararg formatArgs: Any): Spanned = getString(id, *formatArgs).toHtmlSpan()
fun Fragment.getQuantityHtmlSpannedString(@PluralsRes id: Int, quantity: Int): Spanned = resources.getQuantityString(id, quantity).toHtmlSpan()
fun Fragment.getQuantityHtmlSpannedString(@PluralsRes id: Int, quantity: Int, vararg formatArgs: Any): Spanned = resources.getQuantityString(id, quantity, *formatArgs).toHtmlSpan()
strings.xml
<string name="my_text"><Data><![CDATA[<b>Well Done !</b><br></br>All of your activities are completed.<br></br>You may now close the app.<br></br>See you again next time.]]></Data></string>
নির্ধারণ করা
textView.setText(Html.fromHtml(getString(R.string.activity_completed_text)));
আপনি স্ট্রিং থেকে এটি করতে পারেন
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="total_review"><b>Total Review: </b> </string>
</resources>
এবং জাভা কোড থেকে এটি অ্যাক্সেস করতে পারেন
proDuctReviewNumber.setText(getResources().getString(R.string.total_review)+productDetailsSuccess.getProductTotalReview());
strings.xml
<string name="sentence">This price is <b>%1$s</b> USD</string>
page.java
String successMessage = getString(R.string.message,"5.21");
এই মূল্য 5.21 ডলার