2

我试图在 Android 上学习网络视图。我有几个问题。

  1. 我有一个 PHP 页面,它有 2-3 个小段落和一个随机生成的图像。如何确保整个 HTML 页面完全适合移动设备的屏幕(因此看不到滚动条)?如果在某些情况下不可能使图像更小以使其完美适合每台设备?.

  2. 第二个问题是假设我在那个 HTML 页面上有一个链接。我希望当我单击此链接(属于不同域)时,它会在默认浏览器中打开,而不是在 android 应用程序中打开。(如何才能做到这一点)。

    包 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;
        }
    
    }
    
4

2 回答 2

1

要回答您的问题:

  1. 您实际上可能必须在 HTML / JS 代码中执行此操作。挂钩调整大小事件并根据该设备上可用的像素数设置图片大小。这是 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;
         }
    }
    
于 2013-01-26T01:12:04.337 回答
0

要使图像适合屏幕,只需检查窗口的宽度并将其与网页上 javascript 中的图像宽度进行比较。如果图像的宽度大于屏幕的宽度,则将图像的宽度设置为窗口的宽度。

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

至于在 WebView 中打开链接,默认行为是使用用户的默认浏览器(不是您的 WebView)打开它。如果要覆盖此行为,请查看WebViewClient#shouldOverrideUrl(WebView view, String url)

于 2013-01-26T00:31:54.537 回答