Vik*_*tel 5 android android-databinding android-mvvm
我想将文本的某些部分设置为粗体,其值是通过使用DataBinding和ViewModel设置的。
例如
如果您被选中,则将为您的一对支付160美元。
我正在使用字符串资源
<string name="product_price">If you are selected, you will have to pay $%d for your pair.</string>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/spacing_xlarge"
android:layout_marginStart="@dimen/spacing_xlarge"
android:layout_marginBottom="@dimen/spacing_small"
android:text="@{@string/product_price(productPrice)}"
android:textColor="@color/button_tertiary"
android:visibility="@{productPrice > 0}"
style="@style/Body.Small"
/>
Run Code Online (Sandbox Code Playgroud)
当前通过ViewModel和Binding通过设置传递产品价格 binding.setProductPrice(Object.getPrice())
我知道以下解决方案:但想尝试使用DataBinding
但是上述所有解决方案都是解决方法。
题 ::
Want to try DataBinding feature which can be used to style certain part of string. Just like SpannableString
Manipulate String in the Layout file using DataBinding
小智 7
您必须创建一个BindingAdapterand SpannableStringBuilder。
绑定适配器
object Util {
@BindingAdapter("main","secondText")
@JvmStatic
fun setBoldString(view: AppCompatTextView, maintext: String,sequence: String) {
view.text = Util.getBoldText(maintext, sequence)
}
@JvmStatic
fun getBoldText(text: String, name: String): SpannableStringBuilder {
val str = SpannableStringBuilder(text)
val textPosition = text.indexOf(name)
str.setSpan(android.text.style.StyleSpan(Typeface.BOLD),
textPosition, textPosition + name.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
return str
}
}
Run Code Online (Sandbox Code Playgroud)
XML
<android.support.v7.widget.AppCompatTextView
android:id="@+id/username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:main="@{`you will pay $160 for your pair`}"
app:secondText="@{`$160`}"
android:textColor="@color/black"
android:textSize="22sp" />
Run Code Online (Sandbox Code Playgroud)
也许它对你有帮助。
根据@CommonsWare,
尝试通过添加基本的 Html 标签 <string name="product_price">If you are selected, you will have to pay <![CDATA[<b>$%d</b>]]> for your pair.</string>
布局文件:导入的 Html
<?xml version="1.0" encoding="utf-8"?>
<layout
<data>
<import type="android.text.Html"/>
<data>
<LinearLayout>
<android.support.design.widget.CoordinatorLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/spacing_xlarge"
android:layout_marginStart="@dimen/spacing_xlarge"
android:layout_marginBottom="@dimen/spacing_small"
android:text="@{Html.fromHtml(@string/product_price(productPrice))}"
android:textColor="@color/button_tertiary"
android:visibility="@{productPrice > 0}"
style="@style/Body.Small"
/>
</android.support.design.widget.CoordinatorLayout>
</LinearLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1527 次 |
| 最近记录: |