[英]How to Display Webview in fixed width and height
抱歉,我一直在搜索此論壇,但沒有確切答案。 所以我問我自己。
我有一堂課,用目標縱向屏幕640x960顯示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("http://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 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("http://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("http://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("http://stackoverflow.com");
setContentView(layout);
您可以使用RelativeLayout.LayoutParams
類來執行此操作:
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(640, 480);
params.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
webView.setLayoutParams(params);
然后將webview添加到布局中。 您可以使用新的LayoutParams實例和addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
在屏幕底部找到另一個視圖addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.