使用 Linkify.addLinks 与 Html.fromHtml 结合使用

2024-02-22

我有一个TextView通过调用以下命令获取其数据集:

tv.setText(Html.fromHtml(myText));

字符串myText包含部分格式化的 html 数据。例如,它可能有字体标签,但没有任何使用格式设置的 url 链接<a href=...>标签。我本来希望使用Linkify.addLinks(...)这样做是因为我的文本可能包含 Linkify 会为我适当转换的其他类型的链接。所以我写的代码看起来像这样:

String myText = "<font color=\"red\">Red text</font> and Url: www.google.com";
tv.setText(Html.fromHtml(myText));
Linkify.addLinks(tv, Linkify.ALL);
tv.setMovementMethod(LinkMovementMethod.getInstance());

这不能正常工作。这意味着它会处理字体标签,但 Linkify 不会将 url 转换为UrlSpan适当地。

或者,如果我在没有 Html.fromHtml(..) 的情况下调用 setText(),Linkify 可以工作,但随后我会丢失所有由 html 字体标签格式化的文本。不知怎的,它们似乎都是冲突的,我只能选择其中之一。

现在这是我不明白的有趣部分。如果我从 java 中删除 Linkify 代码并转到我的布局 xml 并将以下行放入其中,那么一切似乎都正常工作(Linkify 和 fromHtml 最终都很好地协同工作......不知何故)

<TextView
    ... 
    android:autoLink="all"
    android:linksClickable="true"
    ...
/>

有人可以向我解释为什么这会让一切正常吗?

我查看了 TextView 的源代码setMovementMethod()它最终会调用:

setFocusable(true);
setClickable(true);
setLongClickable(true);

理论上,这应该使一切正常工作,并且行为与 xml 布局代码相同。我尝试切换调用顺序Linkify.addLinks(..) before setText(Html.fromHtml(..))在java代码中,但这没有什么区别。

关于为什么在 java 中组合 Linkify.addLinks() 和 Html.fromHtml() 会导致这种行为的任何想法......但不会在 xml 布局中?


这是因为Html.fromHtml and Linkify.addLinks在处理文本之前删除先前的跨度。

使用此代码使其工作:

public static Spannable linkifyHtml(String html, int linkifyMask) {
    Spanned text = Html.fromHtml(html);
    URLSpan[] currentSpans = text.getSpans(0, text.length(), URLSpan.class);

    SpannableString buffer = new SpannableString(text);
    Linkify.addLinks(buffer, linkifyMask);

    for (URLSpan span : currentSpans) {
        int end = text.getSpanEnd(span);
        int start = text.getSpanStart(span);
        buffer.setSpan(span, start, end, 0);
    }
    return buffer;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Linkify.addLinks 与 Html.fromHtml 结合使用 的相关文章

  • PhoneGap 1.4 封装 Sencha Touch 2.X - 性能怎么样?

    我正在构建一个多平台平板电脑应用程序 仅使用其 Webview 使用 Phonegap 1 4 对其进行包装 然后使用 Sencha Touch 2 框架发挥我的魔力 我所说的多平台是指 iOS 5 X 和 Android 3 0 目前 到
  • react-native android fontFamily 不生效

    问题一 我在index android js的欢迎样式中添加了fontFamily 但没有效果 fontFamily 真的可以在 Android 上使用吗 欢迎 字体大小 20 fontFamily roboto thin 文本对齐 居中
  • 如何使用 JMagick 转换色彩空间?

    如何使用 JMagick API 转换色彩空间 例如 CMYK gt RGB 和 RGB gt CMYK None
  • Java继承,扩展类如何影响实际类

    我正在查看 Sun 认证学习指南 其中有一段描述了最终修饰符 它说 如果程序员可以自由地扩展我们所知的 String 类文明 它可能会崩溃 他什么意思 如果可以扩展 String 类 我是否不会有一个名为 MyString 的类继承所有 S
  • 如何在JPanel中设置背景图片

    你好 我使用 JPanel 作为我的框架的容器 然后我真的想在我的面板中使用背景图片 我真的需要帮助 这是我到目前为止的代码 这是更新 请检查这里是我的代码 import java awt import javax swing import
  • 在 Java 中获取并存储子进程的输出

    我正在做一些需要我开始子处理 命令提示符 并在其上执行一些命令的事情 我需要从子进程获取输出并将其存储在文件或字符串中 这是我到目前为止所做的 但它不起作用 public static void main String args try R
  • 更改 CSS 网格中的列顺序

    我正在研究 CSS 网格 当我在桌面尺寸上查看它时 min width 769px 我有单行三列 像这样的事情 col 1 col 2 col 3 我可以使用 css grid 移动列 以便我可以在移动布局上执行类似以下操作吗 col 1
  • 当表格在 IE 中获得焦点时,表格滚动条会向上跳跃

    问题 我有一个table有包装的div with overflow y auto 一旦table获得焦点 滚动条向上跳 我怎样才能防止这种情况发生 我经历过这种行为IE9 不在 Chrome 中 请注意 我已添加tabindex到桌子上 以
  • 以编程方式向 LinearLayout 添加边框

    我该如何添加以编程方式LinearLayout 的边框 假设我们创建了这个布局 LinearLayout TitleLayout new LinearLayout getApplicationContext TitleLayout setO
  • 为什么\0在java中不同系统中打印不同的输出

    下面的代码在不同的系统中打印不同的输出 String s hello vsrd replace 0 System out println s 当我在我的系统中尝试时 Linux Ubuntu Netbeans 7 1 它打印 When I
  • 部署 .war 时出现 Glassfish 服务器错误:部署期间发生错误:准备应用程序时出现异常:资源无效

    我正在使用以下内容 NetBeans IDE 7 3 内部版本 201306052037 爪哇 1 7 0 17 Java HotSpot TM 64 位服务器虚拟机 23 7 b01 NetBeans 集成 GlassFish Serve
  • CSS:如何在模糊的背景上剪切文本?

    我想重新创建以下样式 我想出了以下内容 问题是剪切不会影响模糊滤镜 我不知道如何解决它 这是我的 HTML 代码 glass width 40 height 100 position absolute background rgba 255
  • android系统用户和linux root用户有什么区别

    当我将手机连接到电脑并使用adb shell与我的手机通信并输入的命令ps命令输出当前在我的手机上运行的进程信息 我发现有两个特殊用户 一个是root 另一个是system 据我所知 Android是基于linux的 所以root用户是最大
  • java XMLSerializer 避免复杂的空元素

    我有这个代码 DocumentBuilderFactory factory DocumentBuilderFactory newInstance DocumentBuilder builder factory newDocumentBuil
  • Activity 暂停时调用 FragmentManager.popBackStack 是否安全

    的文档FragmentManager popBackStack https developer android com reference android app FragmentManager html popBackStack java
  • 简单的颜色变化

    我正在创建一个用户界面 用户可以在其中更改页面的颜色值 我想要的是获取分配给其背景颜色的值并将其变亮一定程度 我只是想获得一条亮点线 而不必每次都制作新图像 示例 用户将背景颜色设置为 ECECEC 现在我希望某个元素边框变成 F4F4F4
  • 获取 byte[]

    我有一个 html 画布 如下所示 output is a base64string of image data var oldImage new Image oldImage onload function var resizeRatio
  • 在线性布局内的 ScrollView 内并排对齐 TextView

    我有一个带有滚动视图的线性布局 我想保留它的当前格式 但只需将 textView2a 和 textView3a 并排放置 而不会破坏我当前的布局格式 我已经包含了我最近的尝试 但它们似乎不正确 提前致谢 Java菜鸟 当前有效的 XML
  • Java/Python 中的快速 IPC/Socket 通信

    我的应用程序中需要两个进程 Java 和 Python 进行通信 我注意到套接字通信占用了 93 的运行时间 为什么通讯这么慢 我应该寻找套接字通信的替代方案还是可以使其更快 更新 我发现了一个简单的修复方法 由于某些未知原因 缓冲输出流似
  • Java 和/C++ 在多线程方面的差异

    我读过一些提示 多线程实现很大程度上取决于您正在使用的目标操作系统 操作系统最终提供了多线程能力 比如Linux有POSIX标准实现 而windows32有另一种方式 但我想知道编程语言水平的主要不同 C似乎为同步提供了更多选择 例如互斥锁

随机推荐

  • PHP 中的会话超时:最佳实践

    两者之间的实际区别是什么session gc maxlifetime and session cache expire 假设我希望用户会话在 15 分钟无活动后 而不是首次打开后 15 分钟 无效 其中哪一项对我有帮助 我也知道我能做到se
  • Rails:activeadmin 覆盖创建操作

    我有一个 activeadmin 资源 它具有 own to user 关系 当我在活动管理中创建模型的新实例时 我想将当前登录的用户关联为创建该实例的用户 我想这是相当标准的东西 所以 我让它工作 controller do def cr
  • 直接在 PhpStorm 中运行 PHP 脚本

    如何在 PhpStorm 中立即运行当前的 PHP 文件 如何像 PyCharm 一样在 PHPstorm 中执行 PHP 命令 在编辑器中右键单击 选择Run 或按 ctrl shift f10 用于命令行脚本执行 如果您想在网络服务器上
  • WPF ItemsControl:将项目的类型限制为特定类型

    我正在创建一个 WPF 自定义控件来作为练习 以在 VS 面板中显示日志消息 错误 警告 消息 该控件是一个 ItemControl 每个项目都是一条要显示的消息 但我必须将消息分类到正确的类别中 因此我需要每个项目公开一些内容 可能是一个
  • 在编写 WinAPI 应用程序时是否应该使用匈牙利表示法? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我最近开始学习 Win32 API 我讨厌匈牙利表示法 变量名中那些愚蠢的前缀 使代码看起来丑陋且几乎不可读 但是正如您可能知道的那样 它绝对无
  • C++中make_shared和普通shared_ptr的区别

    std shared ptr p1 std make shared foo std shared ptr p2 new Object foo 许多谷歌和 stackoverflow 帖子都在这方面 但我无法理解为什么make shared比
  • 在 C 中将可变长度数组声明为全局变量

    如何将可变长度数组声明为全局变量 当在扫描长度之前在函数中声明可变长度数组时 它会编译但不会运行 它给出了分段错误 当相同的声明语句移动到扫描语句下方时 它运行良好 如果我们想要一个全局可用于所有函数的可变长度数组 我们该怎么做呢 这里的问
  • 将 XAML PathGeometry 转换为 WPF PathGeometry

    我想要由 LineSegment 组成的 PathGeometry 所以 我使用第一个代码 但它是错误的 PathGeometry temp PathGeometry Geometry Parse
  • 使用 textFileStream 的 Python Spark Streaming 示例不起作用。为什么?

    我使用spark 1 3 1和Python 2 7 这是我第一次体验 Spark Streaming 我尝试使用 Spark Streaming 从文件中读取数据的代码示例 这是示例的链接 https github com apache s
  • pandas 系列的 groupby 不起作用

    我无法对 pandas Series 对象进行 groupby 数据帧很好 但我似乎无法对系列进行分组 有人能够让它发挥作用吗 gt gt gt import pandas as pd gt gt gt a pd Series 1 2 3
  • Go 中任意精度常量的目的是什么?

    Go 具有任意大小和精度的无类型精确数值常量 这spec requires https golang org ref spec Constants所有编译器都支持至少 256 位的整数 以及至少 272 位的浮点数 尾数为 256 位 指数
  • Feign Hystrix 回退不起作用

    我有以下 FeignClient FeignClient name FooMS fallback CustomerFeign CustomerFeignImpl class public interface CustomerFeign Re
  • Rails 3 UTF-8 查询字符串显示在 URL 中?

    我的主页 上有一个搜索查询表单 当我提交此搜索表单时 我希望最终到达 search query foo 但是 现在我得到 search utf8 E2 9C 93 query foo 那个 utf8 参数在那里做什么 我怎样才能摆脱它 Th
  • 为什么我所有的看跌期权都返回 =>nil?

    我知道这似乎是一个非常简单的问题 但我的看跌期权不断生成 gt nil 这真的让我很困扰 我寻找答案但找不到答案 谢谢 把 眨眼 4 眨眼眨眼眨眼 gt 无 因为那是返回值puts put obj nil 将给定对象写入 ios 与 IO
  • 使用 Nhibernate 在子查询中仅选择不带 group by 属性的 max 子句

    我有这样的 SQL 查询 select from dbo table1 where Id in select max id as id from dbo table1 group by prop1 prop2 prop3 我想创建 NHib
  • Runtime.getRuntime().exec(String[]) 安全性

    我正在使用 Runtime getRuntime exec String 来运行进程 其中 String 数组的某些元素是由用户定义的 这安全吗 或者它允许将代码注入终端吗 如果不安全 我该怎么做才能避免代码注入 它必须是平台独立的 正如我
  • 如何在迭代时向列表添加值[重复]

    这个问题在这里已经有答案了 我有一个这样的场景 List
  • Android-R.java 文件未找到

    在处理 android 项目时 我被 R java 文件困住了 即使我清理项目 项目 gt clean 也找不到该文件 但该文件仍然找不到 即使我创建一个相同的新项目出现问题 我需要做什么 我期待有价值的答复 以便我可以克服这个问题 R j
  • 不知道如何导出 Objective-C 类。 i386 体系结构的未定义符号

    我正在尝试在 OSX 上的 GTK 上做一些工作 但遇到了一些麻烦 因为说实话 我对 Objective C 不太熟悉 我有足够的编程经验 可以很快掌握基本语法 并且可以在文档中查找我需要的内容 但我遇到的问题与链接库并将类暴露给我链接的程
  • 使用 Linkify.addLinks 与 Html.fromHtml 结合使用

    我有一个TextView通过调用以下命令获取其数据集 tv setText Html fromHtml myText 字符串myText包含部分格式化的 html 数据 例如 它可能有字体标签 但没有任何使用格式设置的 url 链接 a h