gpt4 book ai didi

Android - 类 Html - fromHtml - 它是如何工作的?

转载 作者:搜寻专家 更新时间:2023-11-01 09:04:05 24 4
gpt4 key购买 nike

我正在使用 Html.fromHtml 获取描述标签的内容(在提要 XML 中)并且它工作正常

描述标签:

<description><![CDATA[<div class="K2FeedIntroText"><p><img style="margin: 10px; float: left;" alt="block curta" src="http://loc.grupolusofona.pt/images/stories/destaques/block%20curta.jpg" height="110" width="120" />Quatro Horas Descalço é o nome da curta-metragem, realizada por Ico Costa, que se estreia mundialmente no 7.º Festival Internacional de Cinema de Roma, nos dias 12 e 13 de novembro, em competição no Cinema XXI.</p>

]]>

但是当我查看 documentation 时它说:

Returns displayable styled text from the provided HTML string. Any <img> tags in the HTML will display as a generic replacement image which your program can then go through and replace with real images.

所以我的问题是:我怎样才能做到它所说的“然后您的程序可以通过并替换为真实图像”?

我知道如何使用模式通过 RegEx 获取 img url,我只是想知道如何使用该类“通过并用图像替换它”

如果我不清楚,请说些什么,我会尽力解释得更好。

编辑:

好吧,我正在尝试在一个简单的 rss 阅读器中实现它(并尝试使其在代码方面尽可能简单)

我正在使用 DOM 解析器并且我正在使用 map = HashMap<String, Spanned>存储每个子节点的值,以及 KEY :

map.put(KEY_DESC, Html.fromHtml(parser.getValue(e, KEY_DESC)));

在答案的评论中我发现了一个有用的 link我从中创建了一个新类 (URLImageParser) 并尝试像这样使用它:

map.put(KEY_DESC, htmlSpan);

在哪里htmlSpan将是以下结果:

this.textView = (TextView)this.findViewById(R.id.textview);
URLImageParser p = new URLImageParser(textView, this);
Spanned htmlSpan = Html.fromHtml(html, p, null);
textView.setText(htmlSpan);

我还创建了一个 android:visibility="gone" TextView 以防万一它需要将值存储在 TextView 中(也许我解释错了)

我最初的想法是htmlSpan属于 Spanned 类型所以它很适合我的 HashMap。

为了上传到 ListView,我使用了 SimpleAdapter像这样:

    ListAdapter adapter = new SimpleAdapter(this, menuItems, R.layout.linhafeed, 
new String[] { KEY_TITLE, KEY_DESC, KEY_PUBDATE, KEY_LINK },
new int[] { R.id.title, R.id.desc, R.id.pub, R.id.link });

在哪里menuItemsArrayList<HashMap<String,Spanned>>

我这里有什么问题吗?

最佳答案

Html.fromHtml(...)将替换任何 <img ... />带有 ImageSpan 的标签和一个特殊的 'object replacement character' (\uFFFC) .

要显示实际图像,看起来有两种选择:

  • 实现 ImageGetter 返回图像显示为 Drawable .如果我没记错的话,这将不允许您将图像加载卸载到不同的线程,因为它希望立即返回结果。因此,这应该足以满足本地资源的需求(并且可能还满足设备本地存储中的任何 Assets 的需求,前提是不需要潜在的长时间运行的操作;即缩放、裁剪、应用效果等)。
  • 第二次遍历 Spanned结果并替换任何 \uFFFC事件。您应该能够从每个 ImageSpan 中获取图像的来源(url)使用 getSource()方法。不幸的是,看起来没有任何 setter 可以更新 Drawable一旦加载,所以我猜你可能需要更换 ImageSpan用一个新的,在构造函数中传递加载的图像。

第三种选择,可能比上面的更重量级,是使用 WebView而不是 TextView .这样您就不必自己处理任何图像加载,因为它内置在小部件中。

关于Android - 类 Html - fromHtml - 它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13260558/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com