আপনি যদি আপনার অনুবাদকদের জন্য খুব বেশি বিভ্রান্তি এড়াতে চান তবে আমি স্ট্রিংগুলিতে কেবল একটি প্লেসোল্ডার রাখার উপায় নিয়ে এসেছি, যা কোডে পরিচালিত হবে।
সুতরাং, আপনার কাছে স্ট্রিংগুলিতে এটি রয়েছে:
<string name="test">
<![CDATA[
We found %1$s items]]>
</string>
এবং আপনি চাইছেন যে স্থানধারীর পাঠ্যের একটি আলাদা আকার এবং রঙ থাকতে পারে, আপনি এটি ব্যবহার করতে পারেন:
val textToPutAsPlaceHolder = "123"
val formattedStr = getString(R.string.test, "$textToPutAsPlaceHolder<bc/>")
val placeHolderTextSize = resources.getDimensionPixelSize(R.dimen.some_text_size)
val placeHolderTextColor = ContextCompat.getColor(this, R.color.design_default_color_primary_dark)
val textToShow = HtmlCompat.fromHtml(formattedStr, HtmlCompat.FROM_HTML_MODE_LEGACY, null, object : Html.TagHandler {
var start = 0
override fun handleTag(opening: Boolean, tag: String, output: Editable, xmlReader: XMLReader) {
when (tag) {
"bc" -> if (!opening) start = output.length - textToPutAsPlaceHolder.length
"html" -> if (!opening) {
output.setSpan(AbsoluteSizeSpan(placeHolderTextSize), start, start + textToPutAsPlaceHolder.length, 0)
output.setSpan(ForegroundColorSpan(placeHolderTextColor), start, start + textToPutAsPlaceHolder.length, 0)
}
}
}
})
textView.text = textToShow
এবং ফলাফল: