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()");
}