【问题标题】:Android html.fromHtml not workingAndroid html.fromHtml 不工作
【发布时间】:2014-04-18 06:44:08
【问题描述】:

我正在尝试使用 Html.fromHtml() 在 TextView 中添加一些文本和图像,但它不起作用。

从资源中获取字符串并调用Html.fromHtml():

String insertedText = "<img src=\"small_image\"/>";

String strText = getResources().getString(R.string.big_string, insertedText);

myTextView.setText(Html.fromHtml(strText, context, null));

其中 context 是一个也实现 ImageGetter 的活动。这是 getDrawable 函数:

public Drawable getDrawable(String source) {
    int id = 0;
    Drawable drawable = null;
    if(source.equals("small_image")){
        id = R.drawable.small_image;
    }
    if (id > 0) {
        drawable = getResources().getDrawable(id);
        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
    }
    return drawable;
}

在 values.xml 文件中,我有:

<string name="big_string">"Big String %1$s"</string>

我在 drawable 文件夹中有 small_image.png,在调试时,我可以看到 id 获得了正确的值,然后将位图加载到 drawable 变量中,但它仍然呈现写有“obj”的矩形。

知道为什么会这样吗?

我还尝试使用 SpannableStringBuilder 并添加一个图像跨度,该跨度将替换我的文本中的“空格”,但这也不起作用。

【问题讨论】:

  • 您无法在TextView 中显示图像。
  • 根据thisthis,可以。我已经在其他应用程序中使用过它并且效果很好!
  • ImageGetter 的存在表明它确实是可能的。

标签: java android html textview


【解决方案1】:

我发现我的代码有问题。我在问题中写的所有内容都是正确的,您可以将其用作在 TextViews 中合并图像的参考。

问题是我使用的是属性:

android:textAllCaps="true"

在 xml 文件中,并且以某种方式阻止了图像的显示。

【讨论】:

    【解决方案2】:
      String name = modelDispatchReportList.get(position).getName();   //get name from model class typed List
        String text = "<font color='#000000'>" + name + "</font>";  //change color of name
    
        /*  check version of API to call method of Html class because fromHtml method is deprecated
        * */
        if (android.os.Build.VERSION.SDK_INT <= android.os.Build.VERSION_CODES.N) {
            Log.d(TAG, "onBindViewHolder: if");
            holder.textViewName.setText("12345" + " ");    //set text to textView
            holder.textViewName.append(Html.fromHtml(text));    //append text to textView
        } else {
            Log.d(TAG, "onBindViewHolder: else");
            holder.textViewName.setText("12345" + " ");    //set text to textView
            holder.textViewName.append(Html.fromHtml(text, 0)); ////append text to textView
        }
    

    【讨论】:

      【解决方案3】:

      嗯,我试过你的代码,它工作正常...

      顺便说一句,我使用了默认的 ic_lancher drawable...

      我只是简单地将文本视图设置为setContentView

      我猜是 textview 的布局还是 drawable 的问题?

      你能告诉我更多吗?

      【讨论】:

      • 我真的不知道还能说什么,当然我有一个更大的布局文件,但我不能分享它......它在其他情况下对我有用,但我没有看到什么会影响它。如果你能想到什么具体的问题,我很乐意回复。
      • 好吧,确保getDrawable() 被调用并且drawable 是非空的,我不明白为什么......
      • 正如我在问题中所说,我确实确定了。它进入函数并且drawable不为null。我在调试中看到了
      • 如果视图被膨胀并添加到列表视图中会有什么不同吗?我已经没有什么想法了,想什么可行的办法……
      • 也许,我不清楚,但我建议您删除一些 textview 布局属性进行测试。
      【解决方案4】:

      只需将您的 Textview 更改为 WebView 并将内容设置为您的 WebView

      【讨论】:

        【解决方案5】:

        你不能通过 html 在 textview 上设置图片。

        【讨论】:

        • 那为什么会有ImageGetter
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-20
        • 1970-01-01
        • 2013-03-15
        • 1970-01-01
        • 2020-09-20
        相关资源
        最近更新 更多