android scollview嵌套webview底部空白,高度无法自适应解决

最近要做一个页面,需要scollview嵌套webview,怎么嵌套,怎么解决焦点和touch时间冲突,网上一大堆,这里就不赘述了

但是发现webview从一个高度很高的网页加载一个高度很低的网页的时候,高度无法自适应了,造成底部会有一大片的空白,解决方案找到了挺多,描述一下


1.google建议不要在scrollview中使用webview,但是毕竟无法避免,产品的需求

2.每次加载新的url的时候remove掉旧的webview,重新加入一个新的webview去加载这个新url,这种方案是可行的,但是毕竟不太好,效率不高

3.js注入


mWebView.setWebViewClient(new WebViewClient() {
			@Override
			public void onPageFinished(WebView view, String url) {
				mWebView.loadUrl("javascript:App.resize(document.body.getBoundingClientRect().height)");
				super.onPageFinished(view, url);
			}
		});
		mWebView.addJavascriptInterface(this, "App");


@JavascriptInterface
	public void resize(final float height) {
		getActivity().runOnUiThread(new Runnable() {
			@Override
			public void run() {
				//Toast.makeText(getActivity(), height + "", Toast.LENGTH_LONG).show();
				mWebView.setLayoutParams(new LinearLayout.LayoutParams(getResources().getDisplayMetrics().widthPixels, (int) (height * getResources().getDisplayMetrics().density)));
			}
		});
	}

记住该resize方法一定要上面那么写,写成
mWebView.getLayoutParams().height = (int) (height * getResources().getDisplayMetrics().density);
这样是无法成功的,看来宽度也是有影响的


还有一些网上的另外解决方案,我试了一下,都无法成功
4.在从高网页加载低网页的时候,先加载一个空内容,接着立马做相关的处理操作(比如加载新的网页,更改字体等),

// load empty data to shrink the WebView instance
mArticleWebView.loadUrl(Constants.ASSETS_EMPTY);
// load real data
mArticleWebView.loadDataWithBaseURL(null, data, "text/html", "utf-8", null);

Constants.ASSETS_EMPTY 仅仅只是一个String子串,标识该空网页的位置,所以该变量可以为 "file:///android_asset/Empty.html".

试了一下,也是不好用的,不知道时不时我的操作问题,原文链接http://vision-apps.blogspot.hk/2012/08/android-webview-tips-tricks.html

5.修改setting属性

wv.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
wv.setVerticalScrollBarEnabled(false);
wv.setVerticalScrollbarOverlay(false);
wv.setHorizontalScrollBarEnabled(false);
wv.setHorizontalScrollbarOverlay(false);


一样不好用,原文链接http://blog.csdn.net/wht3xr/article/details/21004053

6.一些人的讨论:http://stackoverflow.com/questions/15546416/how-to-shrink-webview-size-dynamically-according-to-its-content


总结了一下,第3中方法还是比较好用的,如果大神还有其他解决方案,希望能告诉我

版权声明:本文为博主原创文章,未经博主允许不得转载。

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。

网络推送的简单使用 - 2015-08-12 14:08:41

/**      *  网络推送         应用场景        1、每天晚上8点影视剧推送        2、小说更新推送        3、游戏活动推送        4、新闻推送        5、健康推送              奇葩用法:       1、聊天       2、查询某人的行为       3、提醒业务,比如一些秀场,女主播可以发送通知给支持她们的土豪           */          //启用推送通知,比较简单,ios8之前一句话搞定          //判断
之前在相关的OC书上看到的关于分类的说法是:只能增加方法,但是不能增加成员变量。 但是今天,在一个练习中,需要用到增加一个成员变量,于是写下了下列代码:(已提出来单独讲此问题) NSObject+Test.h #import Foundation/Foundation.h @interface NSObject ( Test ) @property ( nonatomic ,copy) NSString *str; @end NSObject+Test.m #import "NSObject+Test.h
有一段时间没有瞎折腾了。这周一刚上班萌主过来反映说:微信里面打开聚客宝,分享功能是可以的(这里是用微信自身的js-sdk实现的),但是在android应用里面打开点击就没反应了;接下来狡猾的丁丁在产品群里AT我说:偶们的产品设计不是一直都被技术给反压制住么?真是气死,呵呵。自己刚好有空又有兴趣,于是研究了下,没曾想竟也研究出来了。事后我对整个操作过程整理了下,方便他人也提升自己。 废话少扯,下面上干货。 我的思路是: 在点击h5上的分享图标时,触发js事件,在这里面可以对当前设备的操作系统和浏览器类型做判
使用的是一个第三方库 android-pathview 主要是一个自定义View——PathView,跟所有自定义View一样,重写了三个构造方法。并且最终调用三个参数的构造方法,在里面获取自定义属性。 /** * Default constructor. * * @param context The Context of the application. */ public PathView (Context context) { this (context, null ); } /** * Defau

卫星式菜单 - 2015-08-11 19:08:27

卫星式菜单 点击菜单,可以弹出几个小菜单,再次点击可以归为一个菜单! 下载地址: http://www.devstore.cn/code/info/855.html 运行截图: 热门源码下载: 高仿京东商城  Android快速开发不可或缺的11个工具 类    Android快速开发框架LoonAndroid Android应用源码比较不错的新闻客户端  版权声明:本文为博主原创文章,未经博主允许不得转载。
       在Android中我们常常使用ListView来表示列表,来显示类似的呈现列表样式的结果。来到iOS中,这种控件称之为TableView。这里我们将会通过使用ScrollView和TableView结合的方式来实现可以侧滑显示的列表,这将会大大提高用户体验。先看一下实现效果: 。 。 。      具体实现步骤如下: (1)创建一个iOS项目,Language选择Swift,然后在Main.storyboard中拖入一个ScrollView,即滚动控件,界面设计如图: 。 (2)然后拖动控件
原文作者乔纳森·丹尼可(Jonathan Danylko)是一位自由职业的web架构师和程序员,编程经验已超过20年,涉足领域有电子商务、生物技术、房地产、医疗、保险和公用事业。 从11岁时,我就一直在编程,并且一直都很喜欢技术和编程。这些年来,我积累了一些艰难又容易的经验。作为一名程序员,你或许还没这些经验,但我会把它们献给那些想从中学到更多的朋友。 虽然我想我会持续更新这些经验,可能还会有更多的感想,但就我这20年来看,我想下面这个列表中基本不需要增添额外的东西了。下面就是我至今最难忘的经验: 1.估
cocos版本:cocos2d-x-3.2 环境:Win7+VS2013         由于一些太底层的实现我现在的能力学习不到,只能做一些简单的笔记,供以后翻阅,如果别人能够得到帮助,莫大的荣幸。 一、创建世界并添加刚体 1.创建新的cocos项目,配置扩展库(如有需要): 详细配置点击链接:http://blog.csdn.net/zhangshuliai/article/details/25740343 2.编译并运行成功,然后把HelloWorldScene.cpp里面的init函数修改成下面的
应用基础   声明: 本文由Gordon翻译 发布于 www.dlvoice.com 欢迎转载,但请保留此声明 原文地址: http://developer.android.com/guide/components/fundamentals.html          Android应用是用Java语言来开发的。Android的SDK工具将会把你的代码和数据以及资源文件编译到APK中,所谓的APK就是一个Android包,它是以.apk结尾的压缩包文件。APK文件包含了Android应用的所有部分,一个真
声明:本文内容是从网络书籍整理而来,并非原创。 定义 最正宗的定义: If for each object o1 of type S there is an object o2 of type T such that for all programs P defined in terms of T, the behavior of P is unchanged when o1 is substituted for o2 then S is a subtype of T. 如果对每一个类型为 T1的对象 o