LoginSignup
19
18

More than 5 years have passed since last update.

Android WebViewのメモ

Posted at

AndroidのWebViewを少し触る機会があったので備忘録。

Layout上のWebViewを取得

package com.example.sush.webviewtest;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {

    // WebViewの変数を宣言
    private WebView webView;

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

        // Layout上の要素を取得
        findViews();

        // 指定のURLを読み込み
        webView.loadUrl("http://example.com/");
    }

    /**
     * Layoutから取得する関数を分けておくと便利そう
     */
    protected void findViews()
    {
        // activity_main.xmlには、webViewというIDで配置
        webView = (WebView) findViewById(R.id.webView);
    }

}

JavaScriptを有効化する

デフォルトではJavaScriptが無効化された状態なので、有効化する場合には下記を実行する。

webView.getSettings().setJavaScriptEnabled(true);

表示サイズが合わない(レスポンシブにならない)

レスポンシブデザインが正常に表示されない場合は下記を実行する。

webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);

ページによっては下記も実行すると良い(らしい)。

webView.setInitialScale(1);

右端に余白が存在する

スクロールバーを表示する幅を確保してしまい、WebViewの右端に余白ができてしまう事があるので、スクロールバーをWebView内に含めるように書きを実行する。

webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);

キャッシュを削除する

webView.clearCache(true);

アプリからWebViewのJavaScriptを実行する

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    // KitKat以上は専用の関数が用意されたみたい
    // 第二引数はコールバック
    webView.evaluateJavascript("foo()", null);
} else {
    // 以前は javascript: *** を呼び出せばOK
    webView.loadUrl("javascript:foo()");
}
19
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
18