TextView 锚点 link space

TextView anchor link space

我想制作一个带有 link 的 TextView。我结合了 html 和 java:

// used to enable link navigation on TextView
setMovementMethod(LinkMovementMethod.getInstance())

// TextView with link
<TextView
    android:id="@+id/textView5"
    android:layout_width="wrap_content"
    android:layout_height="19dp"
    android:layout_marginTop="8dp"
    android:gravity="center"
    android:linksClickable="true"
    android:text="@string/link"/>

// @string/link
<string name="link">Test <a href="#">link</a></string>

但是还有一个问题,实际link文本之前的space是这样加下划线的:

为什么会这样,如何解决?

在字符串中使用CDATA来使用HTML标签并使用Html.fromHtml()方法设置文本。

下面的实现:

Activity class 中使用 Html.fromHtml() 设置文本。

TextView textView = (TextView) findViewById(R.id.textView);
textView.setText(Html.fromHtml(getString(R.string.link)));
textView.setMovementMethod(LinkMovementMethod.getInstance());

strings.xml中修改如下:

<string name="link">Test <![CDATA[<a href="#">link</a>]]></string>

// @string/link

<string name="link1">Test&#160;<a href="#">link</a></string>

您可以使用 xml 中的白色 space 作为字符串使用 &#160;。 XML 不会按原样使用白色 space。在设置之前它会 trim 白色 space 。所以用&#160;代替单白space.