使用Android的新data binding library,我是否可以仅通过XML使用TextView
的HTML格式,还是必须以编程方式使用Html.fromHtml
?
答案 0 :(得分:26)
您必须导入Html,然后调用fromHtml方法:
<data>
<import type="android.text.Html"/>
</data>
…
<TextView
android:text="@{Html.fromHtml(@string/my_html)}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
答案 1 :(得分:2)
不应在视图中完成变换。 viewmodel用于在原始模型和视图之间进行转换操作。
所以我宁愿这样做:
<data>
<variable
name="viewModel"
type="yourpackage.YourViewModel"/>
</data>
…
<TextView
android:text="@{viewModel.htmlText}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
在你的viewmodel中:
private Model model; // your model
public Spanned getHtmlText(){
return Html.fromHtml(model.htmlText);
}
答案 2 :(得分:2)
如果你想使用带有html标签的字符串并将其与字符串参数结合使用,可以这样做:
布局:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{activity.formattedString}" />
在您的活动中(前):
public CharSequence getFormattedString() {
if(selectedItem == null) return null;
String str = String.format(Html.toHtml(SpannedString.valueOf(this.getResources().getText(R.string.your_tagged_string))), parameter);
return Html.fromHtml(str);
}
答案 3 :(得分:0)
针对此特定情况,我有一个更为优雅,有效且可重复使用的答案here