使用数据绑定处理HTML实体

时间:2016-09-21 08:00:13

标签: android html data-binding android-databinding

<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">

    <data>
        <import type="android.text.Html"/>
    </data>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="left|center_vertical"
                android:text="@{Html.fromHtml(`some message from model` + `&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`)}"/>

    </RelativeLayout>

    </layout>

我试图在TextView中的文字后面留一些空格,但显示此错误

Error:Execution failed for task ':app:dataBindingProcessLayoutsDebug'. 
The entity "nbsp" was referenced, but not declared.

我尝试过使用xml中的简单空格,但它不会留下空格android:text="@{'some message from model' + ' '}"

1 个答案:

答案 0 :(得分:1)

移除@nbsp并尝试使用hexa(decimal)&#160

因为在XML中主要的五个实体如下:

quet(")amp(&)apos(')It(<)gt(>)其中@nbsp不存在,因此您需要使用它(十进制)值&#160

如果我们必须使用HTMl将Space放入XML中,我们使用&nbsp但是在Xml中它会出现这个错误:

  

实体&#34; nbsp&#34;被引用,但未被声明。

因为XMl的Main五实体是我定义Upper所以你必须使用它六进制(十进制)值..

所以&nbsp你必须&#160。但是再次&是XMl实体,因此您已将&转换为&amp;,以便它可以正常工作。

简称:

&nbsp表示&amp;#160