【问题标题】:TextView anchor link spaceTextView 锚链接空间
【发布时间】:2018-08-25 06:46:54
【问题描述】:

我想制作一个带有链接的 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>

但是还有一个问题,实际链接文本之前的空格是这样加下划线的:

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

【问题讨论】:

标签: android textview


【解决方案1】:

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

以下实现:

Activity 类中使用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>

【讨论】:

    【解决方案2】:

    // @string/链接

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

    您可以使用 xml 中的空格作为字符串使用 &amp;#160;。 XML 不会按原样占用空格。它会在设置之前修剪空白。所以使用&amp;#160; 而不是单个空格。

    【讨论】:

    • 这似乎也有效,不知道为什么有人反对。
    • 虽然我注意到这种方法存在问题。文本换行不再按应有的方式工作,因为  被视为单词中的另一个字符。
    猜你喜欢
    • 1970-01-01
    • 2010-11-18
    • 2011-08-10
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 2019-11-06
    • 1970-01-01
    相关资源
    最近更新 更多