屏幕 宽度和高度 java_java-如何以固定的宽度和高度显示Webview

本文介绍如何使用LinearLayout代替RelativeLayout,通过设置GLSurfaceView和WebView为0高度1权重布局,灵活控制屏幕显示。两种方法包括硬编码尺寸和使用不可见视图进行位置调整,适合前端与后端混合布局的需求。
摘要由CSDN通过智能技术生成

您可以使用LinearLayout而不是RelativeLayout来拆分屏幕.只需将GLSurfaceView和WebView的高度设置为0并将重量设置为1.在您的情况下,代码将为:

LinearLayout layout = new LinearLayout(this); // Use LinearLayout instead of Relative

glView = new GLSurfaceView(this);

glView.setRenderer(this);

glView.setZOrderMediaOverlay(false);

// height is 0, weight is 1

LinearLayout.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 1

params = 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 Relative

glView = new GLSurfaceView(this);

glView.setRenderer(this);

glView.setZOrderMediaOverlay(false);

glView.setId(123); // set id

RelativeLayout.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 GLSurfaceView

layout.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 RelativeLayout

View 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 id

params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

params.addRule(RelativeLayout.ABOVE, fakeView.getId()); // set position is above fakeView

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(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

params.addRule(RelativeLayout.BELOW, fakeView.getId()); // set WebView position is below fakeView

layout.addView(webView, params);

webView.loadUrl("https://stackoverflow.com");

setContentView(layout);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值