我有来自服务器的这种价格 html
<del><span class="woocommerce-Price-amount amount"><span class="woocommerce-Price-currencySymbol">₹</span>12,000.00</span></del> <ins><span class="woocommerce-Price-amount amount"><span class="woocommerce-Price-currencySymbol">₹</span>3,999.00</span></ins>
Run Code Online (Sandbox Code Playgroud)
我正在使用 HTMLCompact 在 textview 中呈现它
HtmlCompat.fromHtml(description, HtmlCompat.FROM_HTML_MODE_COMPACT)
Run Code Online (Sandbox Code Playgroud)
但折扣文字不是 StrikeThrough。Del 标签被完全忽略。
根据要求实现代码
<TextView
android:id="@+id/course_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:fontFamily="@font/open_sans_semi_bold"
app:renderHtmlText="@{viewModel.product.priceHtml}"
android:textSize="18sp" />
//Binding Adapter
@BindingAdapter("renderHtmlText")
fun bindRenderHtmlText(view: TextView, description: String?) {
if (description != null) {
view.text = HtmlCompat.fromHtml(description, HtmlCompat.FROM_HTML_MODE_COMPACT)
} else {
view.text = ""
}
}
Run Code Online (Sandbox Code Playgroud)
handleEndTag根据Android框架源码的逻辑,外部del标签可能会被内部标签忽略span。
建议的解决方案是添加内联样式style="text-decoration: line-through;以实现兼容性,如下所示。
<del>
<span class="woocommerce-Price-amount amount" style="text-decoration: line-through;">
<span class="woocommerce-Price-currencySymbol">₹</span>12,000.00
</span>
</del>
<ins><span class="woocommerce-Price-amount amount"><span class="woocommerce-Price-currencySymbol">₹</span>3,999.00</span>
Run Code Online (Sandbox Code Playgroud)
del或者调整您的 html 页面结构以在标签内创建标签span。
<span class="woocommerce-Price-amount amount">
<span class="woocommerce-Price-currencySymbol"><del>₹</del></span><del>12,000.00</del>
</span>
<ins><span class="woocommerce-Price-amount amount"><span class="woocommerce-Price-currencySymbol">₹</span>3,999.00</span>
</ins>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
145 次 |
| 最近记录: |