java-如何以固定的宽度和高度显示Webview

java-如何以固定的宽度和高度显示Webview,第1张

概述抱歉,我一直在搜索此论坛,但没有确切答案.所以我问我自己.我有一堂课,用目标纵向屏幕640×960显示glView和webview两种布局.我计划拆分布局.因此我的背景看起来是(0,0,640,480)或纵向屏幕的一半.,我想在(0,481,640,479)绘制我的Web视图,该视图占据了从中间到底部的另一半.但是,我

抱歉,我一直在搜索此论坛,但没有确切答案.所以我问我自己.

我有一堂课,用目标纵向屏幕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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1093166.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存