- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在尝试为留言板构建一个 android 应用程序。为了显示帖子内容的格式化 html,我选择了 TextView 和 Html.fromHtml() 方法。不幸的是,这仅涵盖了几个 html 标签。未知标签由实现TagHandler的类处理,必须自己生成。
现在,我在 Google 上搜索了很多,但找不到这个类应该如何工作的示例。让我们考虑一下我有一个 u 标签来为某些文本加下划线(我知道这已被弃用,但无论如何)。我的 TagHandler 看起来如何?
调用方式如下:
public void handleTag(boolean opening, String tag, Editable output, XMLReader xmlReader) {
前两个参数没问题。我想我必须使用 output.append() 修改输出。但是如何在此处附加带下划线的内容?
最佳答案
所以,我终于自己想通了。
public class MyHtmlTagHandler implements TagHandler {
public void handleTag(boolean opening, String tag, Editable output,
XMLReader xmlReader) {
if(tag.equalsIgnoreCase("strike") || tag.equals("s")) {
processStrike(opening, output);
}
}
private void processStrike(boolean opening, Editable output) {
int len = output.length();
if(opening) {
output.setSpan(new StrikethroughSpan(), len, len, Spannable.SPAN_MARK_MARK);
} else {
Object obj = getLast(output, StrikethroughSpan.class);
int where = output.getSpanStart(obj);
output.removeSpan(obj);
if (where != len) {
output.setSpan(new StrikethroughSpan(), where, len, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
}
private Object getLast(Editable text, Class kind) {
Object[] objs = text.getSpans(0, text.length(), kind);
if (objs.length == 0) {
return null;
} else {
for(int i = objs.length;i>0;i--) {
if(text.getSpanFlags(objs[i-1]) == Spannable.SPAN_MARK_MARK) {
return objs[i-1];
}
}
return null;
}
}
}
对于您的 TextView,您可以这样称呼:
myTextView.setText (Html.fromHtml(text.toString(), null, new MyHtmlTagHandler()));
如果有人需要的话。
干杯
关于html - Android:如何使用 Html.TagHandler?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4044509/
我正在使用 TextView 来显示 HTML 字符串,例如: "测试 HTML link1 link2" 如您所见,我需要处理两种不同类型的标签,因此我需要能够处理这两种不同类型的标签并读取 hre
我正在尝试使用 TextView 显示带有自定义标签的字符串文本: 字符串: "text1 paddingtext2" 其中 articlelink 是自定义标签。我使用自定义的 HTML.TagHa
我正在开发一个 Android 应用程序,我需要将 HTLM(也是 标签)显示到一个 textView 中。为此,我找到了这个 TagHandler但它提出了一个 java.lang.RuntimeE
我正在尝试使用 TextView 显示 HTML。我的 HTML 包含一些 CSS 样式。这是我的 HTML 示例。 bold italic underlined striked
我正在尝试为留言板构建一个 android 应用程序。为了显示帖子内容的格式化 html,我选择了 TextView 和 Html.fromHtml() 方法。不幸的是,这仅涵盖了几个 html 标签
我有一个 TextView,我想为它设置 HTML: HTML.fromHTML(); 但是我想过滤掉所有的带有标记处理程序的标记,我想将所有链接 (src) 保存在列表数组中。这可能吗? 谢谢
我正在尝试将列表( 、 )添加到 TextView。通常你用 将 HTML 加载到 TextView textview.setText(Html.fromHtml("some String wit
我正在扩展 Android TagHandler 类来处理 TextField 中的自定义 html 标签。到目前为止一切顺利,我能够拦截标签并将自定义功能分配给这些标签的“onClick()”。但是
我正在使用 Html.fromHtml() 解析 html。我的问题是我的 html 文本有 youtube 嵌入链接(基本上是 标签) 所以,因为 Html类不支持 标签,我需要定义自己的 Tag
我有一个在 Jboss 6 上使用 Primefaces 3.5 和 Omnifaces 1.5 的应用程序,使用 myfaces 2.1.5 关于尝试使用 o:converter我收到以下错误。 o
我想创建一个表单,我可以在其中编辑我类(class)的字段TagHandler . 所以我决定作为参数传递给表单的构造函数 TagHandler tag在哪里 tag - 是我要编辑的标签。在我的表单
我是一名优秀的程序员,十分优秀!