2011-12-27 74 views
0

我試圖控制WebView的寬度範圍。 花了大約兩整天的時間。我仍然離開我開始的地方。 我一直遵守以下文件: http://developer.android.com/guide/webapps/targeting.html http://developer.android.com/guide/practices/screens_support.htmlAndroid WebView寬度

我已經嘗試與meta標籤,CSS,WebView.setInitialScale。 有時,這些更改會使WebView剪輯出現在屏幕的中間位置,有時候會有三分之一。 當你認爲你在瘋狂中找到了可預測的模式時,你會發現佈局響應總是隨機的。 有誰知道在Android平臺上實現嵌入式HTML5網頁是否有前進的方向,還是僅僅是Android平臺尚未準備好的東西?

+0

等等......什麼?你是想**縮放頁面,還是設置webview的寬度**?根據我的經驗,HTML5和Android WebView可以很好地結合在一起。 – 2011-12-27 18:21:59

+0

我真的對HTML5和Android WebView有不好的體驗。頁面太大而不適合視圖。 Android5和HTML5存在兼容性問題。 – 2011-12-28 07:26:17

+0

同樣在這裏,視口標籤中的內容寬度不起作用 – drogon 2012-11-26 20:45:32

回答

1

我不確定你到底在哪裏出錯了,但這裏有一些樣板代碼用於測試我的嵌入式WebViews。我要指出,我主要針對蜂窩(3.x中),但你沒有」指定這樣:

下面是簡單的示例佈局:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/FrameLayout1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 
</FrameLayout> 

現在,這裏是爲活動支持者代碼:

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.webkit.ConsoleMessage; 
import android.webkit.WebChromeClient; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.widget.FrameLayout; 
import android.widget.Toast; 

public class WebViewTestActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 

    final String TAG = "webview test"; 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main);  

    FrameLayout vg = (FrameLayout) findViewById(R.id.FrameLayout1); 
    WebView webView = new WebView(this); 

    vg.removeAllViews(); 
    vg.addView(webView); 

    WebSettings settings = webView.getSettings();   
    settings.setSupportZoom(false); 
    settings.setJavaScriptEnabled(true); 

    webView.setWebChromeClient(new WebChromeClient() { 
     @Override 
     public boolean onConsoleMessage(ConsoleMessage cm) { 

      Log.i(TAG, cm.messageLevel() + ": " + cm.message() + " -- From line " + cm.lineNumber() + " of " + cm.sourceId()); 

      return true; 
     } 
    }); 

    webView.addJavascriptInterface(new Object() { 

     @SuppressWarnings("unused") 
     public void foo() { 
      Log.i(TAG, "----- FOO CALLED -----"); 
      Toast.makeText(WebViewTestActivity.this, "foo called", Toast.LENGTH_LONG).show(); 
     } 

    }, "android"); 

    String html = "<!DOCTYPE html><html><body style=\"background:black;color:white;padding:20px;\"><a href=\"javascript:android.foo()\">CLICK ME!</a><div><label>HTML5 number input: <input type=number /></label></div></body></html>"; 
    webView.loadDataWithBaseURL("http://yourOptionalBaseUrl.com/", html, "text/html", "utf-8", null); 
}   
} 

...這就是你需要有一個嵌入式html5頁面。你也可以把你的HTML頁面到您的「資產」文件夾,並使用加載:

webView.loadUrl("file:///android_asset/page.html"); 

或嵌入就像

或只是一個單一的資源指向它使用相同的負載URL服務器從之前

webView.loadUrl("http://www.yourpage.com/android?param=custom"); 

...我希望這有助於語法...

+0

感謝您的示例ckozl 我的目標設備是2.3.3應用程序級別10 我試過你的例子。規模還是一樣的。 所有東西都伸展了100% 當使用資產文件夾而不是sddisk時,所有我的css和js引用都被破壞了。 Btw。有什麼特別的理由使用FrameLayout而不是WebView? – DevNull 2011-12-27 20:02:49

+0

等等......什麼?你想縮放頁面,還是設置webview的寬度? 我只是試圖讓我的頁面延伸到手機設備的整個寬度,就像我的筆記本電腦已經在FF,Chrome和IE9中一樣。 我會瘋狂的快樂,如果我可以只是有這個HTML的工作。 不幸的是我只能看到大約四分之一的img。其餘的是裁剪。 除非我指定的內容寬度精確的值,這是一個不行。 – DevNull 2011-12-27 20:30:55

+0

我使用了一個'FrameLayout'作爲佔位符,最初代碼的用途是用於在動態創建的'WebView'上測試事物。 – ckozl 2011-12-28 18:44:59

0

我已得出結論,只有這樣牛逼o修改WebView寬度是爲了操縱在html元標記中找到的目標densitydpi 通過將target-densitydpi設置爲我的設備寬度,我得到的網頁跨越整個屏幕寬度。 通過在運行時創建html文件,我可以用檢測到的設備寬度填充目標densitydpi。哎呀!