
抱歉,我一直在搜索此论坛,但没有确切答案.所以我问我自己.
我有一堂课,用目标纵向屏幕640×960显示glVIEw和webvIEw两种布局.我计划拆分布局.因此我的背景看起来是(0,0,640,480)或纵向屏幕的一半. ,我想在(0,481,640,479)绘制我的Web视图,该视图占据了从中间到底部的另一半.但是,我失败了,无法弄清楚如何实现我想要的布局.如何设置webVIEw大小和位置?
PS:如果我将布局设置为与底部对齐,则Web视图的确处于中间到底部的位置,但是我需要指定确切的位置..最坏的..当它加载url时,它将使用整个屏幕,覆盖我所有的第一个布局,我迷路了.因此如何使WebVIEw将加载的URL显示到WebVIEw中指定的宽度和高度.
谢谢..对不起,我的英语不好.
无论如何,这是我的代码(我以编程方式创建了所有代码,没有使用任何xml布局)
glVIEw = new GLSurfaceVIEw(this); glVIEw.setRenderer(this); glVIEw.setZOrderMediaOverlay(false); layout = new relativeLayout(this); layout.addVIEw(glVIEw); webVIEw = new WebVIEw(this); this.showWV(false); //handler message , i hIDe it in certain screen. //webVIEw.getSettings().setJavaScriptEnabled(true); webVIEw.getSettings().setLoaDWithOverviewmode(true); webVIEw.getSettings().setUseWIDeVIEwPort(true); webVIEw.loadUrl("https://stackoverflow.com"); relativeLayout.LayoutParams params = new relativeLayout.LayoutParams(relativeLayout.LayoutParams.WRAP_CONTENT, relativeLayout.LayoutParams.WRAP_CONTENT); params.addRule(relativeLayout.AliGN_PARENT_BottOM); layout.addVIEw(webVIEw, params); setContentVIEw(layout);解决方法:
您可以使用linearLayout而不是relativeLayout来拆分屏幕.只需将GLSurfaceVIEw和WebVIEw的高度设置为0并将重量设置为1.在您的情况下,代码将为:
linearLayout layout = new linearLayout(this); // Use linearLayout instead of relativeglVIEw = new GLSurfaceVIEw(this);glVIEw.setRenderer(this);glVIEw.setZOrderMediaOverlay(false);// height is 0, weight is 1linearLayout.LayoutParams params = new linearLayout.LayoutParams(VIEwGroup.LayoutParams.MATCH_PARENT, 0, 1);layout.addVIEw(glVIEw, params);webVIEw = new WebVIEw(this);this.showWV(false); //handler message , i hIDe it in certain screen.webVIEw.getSettings().setJavaScriptEnabled(true);webVIEw.getSettings().setLoaDWithOverviewmode(true);webVIEw.getSettings().setUseWIDeVIEwPort(true);// height is 0, weight is 1params = new linearLayout.LayoutParams(VIEwGroup.LayoutParams.MATCH_PARENT, 0, 1);layout.addVIEw(webVIEw, params);webVIEw.loadUrl("https://stackoverflow.com");setContentVIEw(layout);或者,您可以将relativeLayout与硬编码的高度和宽度值一起使用:
relativeLayout layout = new relativeLayout(this); // Use linearLayout instead of relativeglVIEw = new GLSurfaceVIEw(this);glVIEw.setRenderer(this);glVIEw.setZOrderMediaOverlay(false);glVIEw.setID(123); // set IDrelativeLayout.LayoutParams params = new relativeLayout.LayoutParams(640, 480);layout.addVIEw(glVIEw, params);webVIEw = new WebVIEw(this);this.showWV(false); //handler message , i hIDe it in certain screen.webVIEw.getSettings().setJavaScriptEnabled(true);webVIEw.getSettings().setLoaDWithOverviewmode(true);webVIEw.getSettings().setUseWIDeVIEwPort(true);params = new relativeLayout.LayoutParams(640, 480);params.addRule(relativeLayout.BELOW, glVIEw.getID()); // set WebVIEw position is below GLSurfaceVIEwlayout.addVIEw(webVIEw, params);webVIEw.loadUrl("https://stackoverflow.com");setContentVIEw(layout);UPD:
如果没有硬编码值,则使用不可见视图:
relativeLayout layout = new relativeLayout(this); // Use linearLayout instead of relative// create a fake vIEw with zero size and place it to center of relativeLayoutVIEw fakeVIEw = new VIEw(this); fakeVIEw.setID(24736); relativeLayout.LayoutParams params = new relativeLayout.LayoutParams(0, 0);params.addRule(relativeLayout.CENTER_IN_PARENT, relativeLayout.TRUE);layout.addVIEw(fakeVIEw, params);glVIEw = new GLSurfaceVIEw(this);glVIEw.setRenderer(this);glVIEw.setZOrderMediaOverlay(false);glVIEw.setID(123); // set IDparams = new relativeLayout.LayoutParams(VIEwGroup.LayoutParams.MATCH_PARENT, VIEwGroup.LayoutParams.MATCH_PARENT);params.addRule(relativeLayout.ABOVE, fakeVIEw.getID()); // set position is above fakeVIEwlayout.addVIEw(glVIEw, params);webVIEw = new WebVIEw(this);this.showWV(false); //handler message , i hIDe it in certain screen.webVIEw.getSettings().setJavaScriptEnabled(true);webVIEw.getSettings().setLoaDWithOverviewmode(true);webVIEw.getSettings().setUseWIDeVIEwPort(true);params = new relativeLayout.LayoutParams(VIEwGroup.LayoutParams.MATCH_PARENT, VIEwGroup.LayoutParams.MATCH_PARENT);params.addRule(relativeLayout.BELOW, fakeVIEw.getID()); // set WebVIEw position is below fakeVIEwlayout.addVIEw(webVIEw, params);webVIEw.loadUrl("https://stackoverflow.com");setContentVIEw(layout); 总结 以上是内存溢出为你收集整理的java-如何以固定的宽度和高度显示Webview全部内容,希望文章能够帮你解决java-如何以固定的宽度和高度显示Webview所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)