When you point to the string resource directly, Textview receives a Spanned type object, which implements the Charsequence interface and contains spans, elements that provide bold, italics, etc).
When you use Databinding, the Databinding API injects the values but returns a String object, which also implements Charsequence, but the Span elements were lost in the operation.
As @Murillo-Comino said, it is possible to reinterpret the String and generate an object that has Span through the Html class, according to https://stackoverflow.com/a/51823945/10526030.
However, the fromHtml method changed in API level 24 (Android N), so the most correct currently (for compatibility between different versions of Android) would be you use
HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_LEGACY);
For this, it is necessary to include dependency in your project:
implementation 'androidx.core:core:1.0.1
Thus, you must insert:
In the string.xml file
<string name="minhaString">Você tem um limite de <b>%s</b> reais.</string>
In the Layout file:
<import type="androidx.core.text.HtmlCompat"/>
In the component that receives the text:
android:text="@{HtmlCompat.fromHtml(@string/minhaString(500),HtmlCompat.FROM_HTML_MODE_LEGACY)}"
Have you tried using html? https://stackoverflow.com/a/51823945/10526030
– Murillo Comino