簡體   English   中英

如何以固定的寬度和高度顯示Webview

[英]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來拆分屏幕。 只需將GLSurfaceViewWebView高度設置為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM