Android html.fromHtml无法正常工作

时间:2014-03-13 13:31:24

标签: java android html textview

我正在尝试使用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));

上下文是一个也实现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变量中加载了位图,但它仍然使用&#39; obj&#39呈现矩形;写在里面。

知道为什么会这样做吗?

我也尝试过使用SpannableStringBuilder并添加一个替换了空间的图像范围&#39;从我的文字,但这也没有。

5 个答案:

答案 0 :(得分:3)

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

问题在于我使用的是属性:

android:textAllCaps="true"

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

答案 1 :(得分:1)

  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
    }

答案 2 :(得分:0)

好吧,我尝试了你的代码,它正在运行......

顺便说一句,我使用了聋人ic_lancher drawable ......

我只需将textview设置为setContentView

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

你可以告诉我更多吗?

答案 3 :(得分:0)

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

即可

答案 4 :(得分:-1)

你不能用html在textview上设置图像。