安卓 WebView 。在没有滚动条的情况下在屏幕上显示 HTML

标签 android webview android-webview

我正在尝试学习 Android 上的 WebView 。我有几个问题。

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

最佳答案

回答您的问题:

  1. 您实际上可能必须在 HTML/JS 代码中执行此操作。 Hook 调整大小事件并根据该设备上可用的像素数设置图片大小。这是 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. 您可以通过覆盖 WebViewClient 类的 shouldOverrideUrlLoading 方法来做到这一点:

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

关于安卓 WebView 。在没有滚动条的情况下在屏幕上显示 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14523067/

相关文章:

android - 无法合并dex-Gradle 3.0.0

android - 运行时新的首选项支持库不正确的主题

javascript - 如何在 Android WebView 中修改 DOM?

android - 在 webview 中加载保存在 sdcard 中的图像

python-3.x - 是否可以像其他 gtk 小部件一样使 webkit webview 在应用程序中透明?

javascript - 刷新崩溃的 Android WebView

Android 在应用程序中嵌入 Firefox 浏览器

android - 带有软键盘显示的问题 View 切换选项卡

android - Spring Android - 反序列化 JSON 对象在继承时导致问题

android - 无法在 nexus 4 android 4.2.2 的 webview 中输入文本