Android新数据绑定库中的HTML格式

时间:2015-08-03 01:55:33

标签: android data-binding

使用Android的新data binding library,我是否可以仅通过XML使用TextView的HTML格式,还是必须以编程方式使用Html.fromHtml

4 个答案:

答案 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