在 Android 中使用 Html.fromHtml() 突出显示文本颜色?
我正在开发一个应用程序,其中会有一个搜索屏幕 用户可以在其中搜索特定关键字,并且该关键字应该是 突出显示。我找到了 Html.fromHtml 方法。
但我想知道这是否是正确的做法或 不是。
请让我知道您对此的看法。
I am developing an application in which there will be a search screen
where user can search for specific keywords and that keyword should be
highlighted. I have found Html.fromHtml method.
But I will like to know whether its the proper way of doing it or
not.
Please let me know your views on this.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(11)
或者比手动处理 Spannable 简单得多,因为您没有说要突出显示背景,而只是突出显示文本:
Or far simpler than dealing with
Spannable
s manually, since you didn't say that you want the background highlighted, just the text:使用 xml 资源中的颜色值:
Using color value from xml resource:
这可以使用 Spannable String 来实现。您将需要导入以下内容
,然后您可以使用类似以下内容更改文本的背景:
这将以红色突出显示 pos 1 - 4 处的字符。希望这有帮助!
This can be achieved using a Spannable String. You will need to import the following
And then you can change the background of the text using something like the following:
Where this will highlight the charecters at pos 1 - 4 with a red color. Hope this helps!
字体已弃用,请使用 span 代替
Html.fromHtml(""+content+"")
font is deprecated use span instead
Html.fromHtml("<span style=color:red>"+content+"</span>")
替代解决方案:使用 WebView 代替。 Html 很容易使用。
Alternative solution: Using a WebView instead. Html is easy to work with.
部分文本加下划线并着色,
要在 strings.xml 中使
然后在活动中
和可点击链接中:
以及在您的活动中:
To make part of your text underlined and colored
in your strings.xml
then in the activity
and for clickable links:
and in your activity:
首先将字符串转换为 HTML,然后将其转换为 spannable。按照以下代码的建议进行操作。
First Convert your string into HTML then convert it into spannable. do as suggest the following codes.
它将给出与您在 html 编辑器中所做的颜色完全相同的颜色,只需设置 textview 并将其与 textview 值连接即可。 Android 不支持跨度颜色,在编辑器中将其更改为字体颜色即可。
It will give the color exactly what you have made in html editor , just set the textview and concat it with the textview value. Android does not support span color, change it to font color in editor and you are all set to go.
还添加 Kotlin 版本:
strings.xml
)colors.xml
)和 Kotlin 扩展(使用删除 alpha):
演示
Adding also Kotlin version with:
strings.xml
)colors.xml
)And Kotlin extension (with removing alpha):
Demo
我发现直接使用十六进制颜色对应的负整数十进制也可以渲染不透明:
I found that using the negative integer decimal corresponding to the hexadecimal color directly can also render without transparency: