后台Json返回的字符串,某个字段的内容是一个字符串,但是字符串里面的内容是一段html语言,该语言的内容包括文字与
图片,怎么拿到内容显示在手机上?
1)首先通过jsonObject根据该字段拿到字段后面的内容:
String
data
= jsonObject.getString(
"description"
);
2)通过WebView显示内容,
webView
.loadDataWithBaseURL(
null
,
data
,
"text/html"
,
"UTF-8"
,
null
);
头尾两个参数是url,这里不用管,因为要显示的只是后台返回的字符串内容。
3)注意:这里不要使用
webView
.loadData(data3,
"text/html"
,
"UTF-8"
);
因为使用这个方法有很多毛病,图片不能显示或者文字乱码。
本人遇到的问题:
a.使用loadData,如果只在后面指定UTF-8,则图片是能显示的,但是文字是乱码;
b.如果对data进行了Unicode的转码,则图片不能显示,显示的是乱码。
所以这个方法不要使用。
4)为什么不要使用loadData方法?
如果字段后面的内容有文字以及图片,则该方法显示有问题。
如果包含的内容只有文字,那么我们连webView都可以不用了,显示内容我们直接用一个TextView即可,步骤:
a.在XML文件中定义一个TextView;
b.
通过jsonObject根据该字段拿到字段后面的内容;
String
data
= jsonObject.getString(
"description"
);
c.把内容转成Spanned:
Spanned spanned = Html.fromHtml(data);
d.给控件设置内容:
findView(R.id.textview).setText(spanned);
Spanned和String类型都是集成自CharSequence,所以可以直接给textView设置文本内容,并且设置出来的
内容是带有html格式的--即设置出来的内容和网页显示的内容格式是一致的,这个用起来比较方便,虽然我们
是用一个TextView设置的内容,但是显示的时候会根据网页内容一样有换行等。
如果返回的内容是有图片,我们用这种方法也可以让图片显示出来,但是显示的图片有时候会有问题,图片只是
显示一小块,并且不显示图片本身的内容,像是一个默认的图片,很小。
5)如果返回的字段内容只包含图片,没有内容,可以用webView.loadData方法。
网上说这个方法不能加载出来图片,但是经过亲测发现的确是可以加载出来的,可能是在某些情况下不能,这个
情况还没有遇到过。