在ScrollView中的WebView加载Html代码

           描述:本人做的是电商项目,遇到一个问题。商品的价格,标题,图片等信息用原生安卓控件展示,但商品描述要用Html代码展示,即安卓客户端要无条件支持显示商家在后台用html编辑的商品描述(有不同颜色的字体和图片超链接)。按常理WebView支持展示一个url链接,怎么会直接展示Html代码呢,查了一下资料,WebView是支持的。

        代码如下:

 

                StringBuffer sb=new StringBuffer();
		sb.append("<html>");
		sb.append("<head><meta http-equiv="+YH+"content-type"+YH+" content="+YH+"text/html;ch                arset=utf-8"+YH+"></head>");
		sb.append("<body>");
		//要展示的Html代码片段
         String strTrim = StringUtil.StrTrim(result.getContent());
            if(!TextUtils.isEmpty(strTrim)){
                strTrim=strTrim.replace("<img","<img width="+YH+"100%%"+YH+"  height="+YH+"auto"+YH);//处理图片宽度适应屏幕
                strTrim=strTrim.replace("https://","http://");//片段在高版本中不支持https
            }
		sb.append(strTrim);
		sb.append("</body>");
		sb.append("</html>");
		webView.loadDataWithBaseURL(null, sb.toString(),"text/html","UTF-8", "");


这样会有一个问题,WebView放在ScrollView中的LinearLayout中,但WebView的页面长度是不确定的,若把高写成自适应是不起作用的,页面显示不错来。所以WebView要放到一个自定义的框架布局中,框架布局放到线性布局中,这样WebView的页面有多少显示多少,且ScrollView支持上下滑动。

 

自定义框架布局代码如下:(在一个页面中webView只占用一部分使用)

 

public class AllFrameLayout extends FrameLayout {

	public AllFrameLayout(Context context) {
		super(context);
	}

	public AllFrameLayout(Context context, AttributeSet attrs) {
		super(context, attrs);
	}
	
	@Override
	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
		int expendsHeight=MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2,MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, expendsHeight);  
	}

}


这样就可以实现头部为安卓原生控件,下边为WebView加载Html代码片段,上下可以滑动,整体效果如原生控件一样。

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值