2013-07-14 68 views
4

WebView未正確顯示網站。任何幫助將是偉大的! 該代碼使用在所有其他網站上工作。不知道最新的問題。我應該添加什麼東西?在Chrome和其他瀏覽器中運行良好,所以不知道該怎麼做。任何幫助將是偉大的!WebView無法正確顯示

的WebView

enter image description here

enter image description here

public class Website extends Activity { 
    WebView myWebView; 
    LinearLayout root; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.website); 

     myWebView = (WebView) findViewById(R.id.webView); 

     root = (LinearLayout) findViewById(R.id.root); 

     WebSettings webSettings = myWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 

     myWebView.addJavascriptInterface(new WebAppInterface(this), "Android"); 
      myWebView.setWebViewClient(new WebViewClient()); 
      myWebView.getSettings().setBuiltInZoomControls(true); 
      myWebView.getSettings().setSupportZoom(true); 
      myWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); 
        myWebView.getSettings().setDomStorageEnabled(true); 

      myWebView.loadUrl("http://dspart.org/"); 

     getActionBar().setDisplayHomeAsUpEnabled(true); 
    } 

    public class WebAppInterface { 
     Context mContext; 

     /** Instantiate the interface and set the context */ 
     WebAppInterface(Context c) { 
      mContext = c; 
     } 

     /** Show a toast from the web page */ 
     @JavascriptInterface 
     public void showToast(String toast) { 
      Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); 
     } 

     private class MyWebViewClient extends WebViewClient { 
      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       if (Uri.parse(url).getHost().equals("http://dspart.org")) { 
        // This is my web site, so do not override; let my WebView 
        // load the page 
        return false; 
       } 
       // Otherwise, the link is not for a page on my site, so launch 
       // another Activity that handles URLs 
       Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
       startActivity(intent); 
       return true; 
      } 

     } 
    } 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (event.getAction() == KeyEvent.ACTION_DOWN) { 
      switch (keyCode) { 
      case KeyEvent.KEYCODE_BACK: 
       if (myWebView.canGoBack()) { 
        myWebView.goBack(); 
       } else { 
        root.removeView(myWebView); 
        myWebView.removeAllViews(); 
        myWebView.destroy(); 
        this.finish(); 
       } 
       return true; 
      } 
     } 
     return super.onKeyDown(keyCode, event); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     case android.R.id.home: 
      NavUtils.navigateUpFromSameTask(this); 
      root.removeView(myWebView); 
      myWebView.removeAllViews(); 
      myWebView.destroy(); 
      this.finish(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 

     } 
    } 
} 
+1

嘗試在*之前將'loadUrl()'移動到*之後,而不是在之前配置'WebView'。 – CommonsWare

+0

謝謝你嘗試,但它沒有奏效。 – user2407147

+0

如果你可以投票問題會很好 – user2407147

回答

5

一些建議

移動配置完WebView後(我注意到在評論中,但它應該在那裏不管)。

它看起來像你的網頁中缺少的樣式。要麼他們沒有加載,或者以某種方式被WebView禁用。嘗試添加

myWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);myWebView.getSettings().setDomStorageEnabled(true);

它也像web視圖被縮小:
嘗試刪除
myWebView.getSettings().setUseWideViewPort(true); myWebView.getSettings().setLoadWithOverviewMode(true);

,僅供參考,您實際上並不使用MyWebViewClient什麼,和而是依靠默認的WebViewClient

+0

感謝您的意見。我已經完成了上述所有內容,但最終只是以前的縮放版本。但感謝所有的建議。 – user2407147

+0

無賴。我在我自己的WebView上試了一下,它正確加載了其他樣式。由於這是一個日文站點,WebView可能有一些字符在分析時遇到麻煩? CSS網址中是否有非英文字符? – ggmathur

+0

我不是100%,因爲我不擁有該網站。但它是一個日文網站。 – user2407147

0

我不知道這是否解決了問題,但是當您在WebView上調用loadUrl時,將在後臺線程上調用WebViewClient方法。我不認爲你可以直接從後臺線程調用UI的東西。一個例子見How to start an activity from a thread class in android?

+0

事情是,代碼在我嘗試過的每個其他網站上工作。但是,謝謝 – user2407147

+0

我相信,如果你從主線程調用UI的行爲是未定義的(隨機)。不知道,但。你有沒有嘗試在主線程上運行所有UI的東西? – 2013-07-14 21:57:59

+0

不知道我會如何實現這一點,你可以顯示使用我的代碼。 – user2407147