2

AndroidでWebビューを学ぼうとしていました。いくつかの質問を聞きたいんです。

  1. 2〜3個の小さな段落とランダムに生成された画像を含むPHPページがあります。HTML ページ全体がモバイル デバイスの画面に完全に収まるようにするにはどうすればよいですか (スクロール バーが表示されないようにするため)。場合によっては、すべてのデバイスに完全に収まるように画像を小さくするにはどうすればよいですか? .

  2. 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

画像を画面に合わせるには、ウィンドウの幅を確認し、WebページのJavaScriptで画像の幅と比較します。画像の幅が画面の幅よりも大きい場合は、画像の幅をウィンドウの幅に設定します。

jQueryの.width()関数を確認してください。$(window).width()とを使用できます$('#myimageid").width()

WebViewでリンクを開く場合、デフォルトの動作は、ユーザーのデフォルトのブラウザー(WebViewではない)を使用してリンクを開くことです。この動作をオーバーライドする場合は、WebViewClient#shouldOverrideUrl(WebView view、String url)を確認してください。

于 2013-01-26T00:31:54.537 に答える