【问题标题】:How to resize TextView after loading images using asynctask使用 asynctask 加载图像后如何调整 TextView 的大小
【发布时间】:2012-01-18 20:15:12
【问题描述】:

我正在使用Android HTML ImageGetter as AsyncTask 中给出的方法将图像从 html 源加载到 Textview 中。这很好用,并且在下载图像时不会冻结 UI。我遇到的问题是,当它获取图像时,将它们绘制到 TextView 中,TextView 没有调整大小,因此图像出现在已经存在的文本上,实际上被截断为 TextView 的当前大小(如果有很多图像,则使用 wrap-content 设置。

我无法具体设置TextView的初始大小,因为我事先不知道是否会有图像,或者有多少,或者什么大小。关于如何在图像加载后调整 TextView 大小的任何建议?

如果有任何区别,TextView 位于由自定义适配器处理的 ListView 中。

哦,我不只使用 WebView 的原因是,因为它在自定义行 ListView 中,最多可以有 20 行,而且我在一次处理这么多 WebView 时遇到了奇怪的问题。

谢谢

【问题讨论】:

  • 你为什么不使用 imageView 而不是 TextView?
  • 我没有使用 ImageView,因为 html 还包含一堆我需要显示的文本。文本是主要部分,但包含可选图像。
  • Soo...为什么不解析文本然后将图像下载到图像视图?它可能会让您的生活更轻松。
  • 好的,所以我认为您可能是对的,我认为这意味着我必须:1)解析出图像链接(我猜是 jsoup)。 2) 以编程方式将 0 到多个 ImageViews 添加到我的 ListView 自定义适配器行。 3) 为各种 ImageView 实现异步下载器。而且 TextView 非常接近工作 sigh :)

标签: android android-asynctask


【解决方案1】:

试试this,应该可以。

例如:

(TextView).setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAPֹ_CONTENT, LayoutParams.WRAP_CONTENT));

【讨论】:

  • 感谢建议,我发布的链接中的代码调用容器上的 Invalidate(作为参数传递)似乎不起作用,我也尝试过,但仍然没有运气。 (将布局类型更改为相对,因为这就是 TextView 包含的内容)。
  • 宾果游戏,我想我明白了。与其将 TextView 对象作为 View 传递给 URLImageParser 类,不如将其专门作为 TextView 传递。这让我可以在上面调用URLImageParser.this.container.setEllipsize(null);,这似乎可以完成这项工作。将此作为评论发布,因为它不会让我发布作为我自己问题的答案。稍后将使用此答案更新问题。
  • 这似乎是一个不错的方法。我认为我在评论中发布的方式问题较少,而且更详细。
【解决方案2】:

Bingo,我想我明白了。

不要将 TextView 对象作为 View 传递给 URLImageParser 类,而是将其专门作为 TextView 传递。这让我可以在上面调用URLImageParser.this.container.setEllipsize(null);,这似乎可以完成这项工作。

【讨论】:

  • URLImageParser.this.container.setEllipsize(null); 解决方案适用于 Android 2.x,但不适用于 Android 4.x!有人有想法吗?
猜你喜欢
  • 1970-01-01
  • 2015-12-29
  • 1970-01-01
  • 2013-07-14
  • 2014-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-19
相关资源
最近更新 更多