2013-01-25 30 views
1

我試圖在Android上學習web視圖。我有幾個問題。Android webview。在沒有滾動條的屏幕上擬合HTML

  1. 我有一個PHP頁面,其中有2-3小段落和其隨機產生 映像。我如何確保整個HTML頁面 完全適合移動設備的屏幕(使滾動條 未被看到)?如果在某些情況下不可能,我如何才能使圖像變得更小以適應每個設備? 。

  2. 第二個問題是假設我在該HTML頁面上有一個鏈接。我想要 ,當我點擊這個鏈接(屬於不同的域名)時,它在 開啓了默認瀏覽器而不是android應用程序。 ( 怎麼能這樣做)。

    package com.example.try2;

    import android.os.Bundle; 
    import android.app.Activity; 
    import android.view.Menu; 
    import android.view.Window; 
    import android.view.WindowManager; 
    import android.webkit.WebSettings; 
    import android.webkit.WebView; 
    
    public class MainActivity extends Activity { 
    
        @Override 
        protected void onCreate(Bundle savedInstanceState) { 
         //Full screen 
         requestWindowFeature(Window.FEATURE_NO_TITLE); 
         this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    
         super.onCreate(savedInstanceState); 
         setContentView(R.layout.activity_main); 
    
         WebView myWebView = (WebView) findViewById(R.id.webview); 
         myWebView.setVerticalScrollBarEnabled(false); 
         myWebView.setHorizontalScrollBarEnabled(false); 
         myWebView.getSettings().setLoadWithOverviewMode(true); 
         myWebView.getSettings().setUseWideViewPort(true); 
         WebSettings webSettings = myWebView.getSettings(); 
         webSettings.setJavaScriptEnabled(true); 
         myWebView.loadUrl("http://www.example.com/mobile/index.php"); 
    
        } 
    
        @Override 
        public boolean onCreateOptionsMenu(Menu menu) { 
         // Inflate the menu; this adds items to the action bar if it is present. 
         getMenuInflater().inflate(R.menu.activity_main, menu); 
         return true; 
        } 
    
    } 
    

回答

0

,使屏幕上的圖像貼合,只需檢查窗口的寬度,它與您的網頁上的JavaScript圖像的寬度進行比較。如果圖像的寬度大於屏幕的寬度,請將圖像的寬度設置爲窗口的寬度。

查看jQuery的.width()函數。您可以使用$(window).width()$('#myimageid").width()

至於在WebView中打開鏈接,默認行爲是使用用戶的默認瀏覽器(不是您的WebView)打開它。如果要覆蓋此行爲,請WebViewClient#shouldOverrideUrl(WebView view, String url)

0

回答您的問題:

  1. 您可能實際上要做到這一點的HTML/JS代碼。鉤住resize事件並根據該設備上可用的像素數設置圖片大小。這裏是jQuery的一個例子,其中MYIMAGE是圖像的ID和會將myText是在頁面的頂部包含文本的div ID:

    $(window).resize(function() { 
    
        // Compute available height for image 
        // by subtracting text div height from screen height 
        var availableImageWidth = screen.width; 
        var availableImageHeight = screen.height - $('myText').height(); 
    
        // Get image width and height 
        var imageWidth = $("#myImage").width(); 
        var imageHeight = $("#myImage").height(); 
    
        // Compute scale that maintains aspect ratio and fits image within screen bounds 
        var scale = Math.min(availableImageWidth/imageWidth, availableImageHeight/imageHeight); 
    
        // Set new image dimensions 
        $("#myImage").width(imageWidth * scale); 
        $("#myImage").height(imageHeight * scale); 
    } 
    
  2. 您可以通過重寫的shouldOverrideUrlLoading方法做到這一點WebViewClient類別:

    myWebView.setWebViewClient(new WebViewClient() 
    { 
        public boolean shouldOverrideUrlLoading(WebView view, String url) 
        {   
         // Redirect HTTP and HTTPS urls to the external browser 
         if (url != null && URLUtil.isHttpUrl(url) || URLUtil.isHttpsUrl(url)) 
         { 
          view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); 
          return true; 
         } 
    
         return false; 
        } 
    }