Android:WebViewの詳細

12609 ワード

WebViewはアンドロイドでhtmlテキストの内容を表示するためのコントロールであり、html 5にもよくサポートされており、iosのコントロールUIWebViewはそれほど差がありません.webViewについてはネットでの説明が多いのですが、ちらほら紹介されていて、これまでのwebviewの印象が強かったようで、実は腹立たしいので、webviewの開発経験をまとめることにしました.
WebViewを使用するには、ネットワーク権限を開設する必要はありません.
ネット上では、webviewにインターネット権限を開設する必要があるという文章があります.そうしないと、Web page not availableエラーが発生します.これは間違っています.Web page not availableが現れたのは、webviewを使用したからではなく、webviewがネットワークにアクセスしたからです.もしwebviewがローカルhtml(例えばassetsディレクトリのファイル)をロードしただけで、htmlテキストのある文字列をロードしただけで、インターネット権限がなくても、間違いは報告されません.
Webviewの呼び出し方法
xmlで
1
2
3
4
5 <WebView      android:id= "@+id/blog_detail_webview"      android:layout_width= "fill_parent"      android:layout_height= "wrap_content"      android:background= "#FFFFFF" />
义齿
1
2
3
4
5
6 mWebView = (WebView)findViewById(R.id.blog_detail_webview); mWebView.getSettings().setJavaScriptEnabled( false ); mWebView.getSettings().setSupportZoom( false ); mWebView.getSettings().setBuiltInZoomControls( false ); mWebView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); mWebView.getSettings().setDefaultFontSize(18);
基本設定
上のjavaコードの部分はみんなが知っていると信じて、WebViewと他のコントロールの違いはその属性設定がmWebViewを呼び出すことにあることを見ることができます.getSettings()が完成したのは、グーグルのような設計の意図を知らない.
mWebView.getSettings().setJavaScriptEnabled(false);
jsがサポートされていないことを示します.javaとjsをインタラクティブにしたい場合、またはjsが一定の機能を完了したい場合はfalseをtrueに変更してください.
mWebView.getSettings().setSupportZoom(false);
スケールがサポートされているかどうかを設定します.ここではfalse、デフォルトはtrueです.
mWebView.getSettings().setBuiltInZoomControls(false);
ズームツールを表示するかどうかを設定します.デフォルトはfalseです.
mWebView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
一般的にはあまり使われませんが、WebViewコンポーネントで通常のWebページを表示すると横スクロールバーが表示され、ページの表示が非常に不便になります.LayoutAlgorithmはhtmlのレイアウトを制御するための列挙で、NORMAL:通常表示、レンダリング変化なしの3種類があります.SINGLE_COLUMN:すべてのコンテンツをWebViewコンポーネントの等幅の列に配置します.NARROW_COLUMNS:可能であれば、すべての列の幅が画面の幅を超えないようにします.
mWebView.getSettings().setDefaultFontSize(18);
デフォルトのフォントサイズを設定します.デフォルトは16で、有効値区間は1~72です.
コンテンツのロード
(1)assetsディレクトリの下にあるローカルページのロード
一般的に私たちはすべてhtmlファイルをassetsディレクトリの下に置いて、WebViewはassetsディレクトリの下のローカルのホームページとピクチャーなどの資源を呼び出してとても便利で、形を使います
1 mWebView.loadUrl( "file:///android_asset/html/test1.html" );
に表示されます.
(2)リモートWebページのロード
1 mWebView.loadUrl( "http://www.google.com" );
(3)LoadDataまたはloadData WithBase URLメソッドを使用してコンテンツをロードする
私たちのwebviewはhtmlクリップであって、完全なページではない場合がありますが、実際にはほとんどの場合、完全なページはアプリケーションを作る必要がなく、ブラウザに直接アクセスします.
この場合、LoadDataまたはloadData WithBase URLメソッドを使用します.後者は最も多く使用されます.
void loadDataWithBaseURL (String baseUrl, String data, String mimeType, String encoding, String historyUrl)
loadDataWithBaseURL()はloadData()よりも2つのパラメータが多く、HTMLコードクリップ内の関連リソースの相対ルートパスを指定したり、履歴Urlを指定したりすることができます.残りの3つのパラメータは同じです.
ここでは主にパラメータbaseUrlに注意します.baseUrlはあなたのdataパラメータのデータがどのアドレスを基準にしているかを指定します.dataのデータにはハイパーリンクやimage要素がある可能性がありますが、多くのサイトのアドレスは相対的なパスを使用しています.baseUrlがなければ、webviewはこれらのリソースにアクセスできません.
例を挙げます.
1
2 String body = " : img , <img src='/uploads/allimg/130923/1FP02V7-0.png' />" ; mWebView.loadDataWithBaseURL( "http://www.jcodecraeer.com" , body,  "text/html" "utf-8" , null );
baseUrlが次のように指定されていない場合http://www.jcodecraeer.comでは、この画像は表示されません.
上記の例では、loadDataWithBase URLの使い方を示しています.文字列のhtmlコンテンツを直接ロードします.assetsディレクトリの下のローカルページファイルから読み取る場合があります.次に、html/test1.html LoadData :を参照してください.
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 String data =  "" ; try   {      // assets AssetManager Open      InputStream is = getAssets().open( "html/test2.html" );      // loadData()      ByteArrayBuffer baf =  new   ByteArrayBuffer(500);      int count = 0;      while   ((count = is.read()) != -1) {          baf.append(count);      }      data = EncodingUtils.getString(baf.toByteArray(),  "utf-8" ); catch   (IOException e) {      e.printStackTrace(); } // mWebView.loadData(data,  "text/html" "utf-8" ); // wv.loadDataWithBaseURL("", data, "text/html", "utf-8", ""); loadDataローディングは、アドレスが されていない urlのため、mWebView.loadUrl(ファイルの のリソースファイルまたはリンクアドレスが になります."file:///android_asset/html/test1.html" )

loadData html/test1.html loadDataWithBaseURL loadData HTML ,loadData() html  data ’#’, ‘%’, ‘\’, ‘?’ , , , , , , 。

%, , 。 。

#, goBack , canGoBAck 。 , 。

WebView

android webView padding
WebView, padding , padding , , 。android bug, layout webview, , 。 webView css padding, padding xml

shouldOverrideUrlLoading url

url eoe.cn webview , .

1
2
3
4
5
6
7
8
9
10
11
12
@Override public boolean shouldOverrideUrlLoading(WebView view, String url) {          LogUtil.i( this   "url=" url);      if ( url.contains( "eoe.cn" ) ==  true ){            view.loadUrl(url);          return true ;      } else   {            Intent  in new Intent (Intent.ACTION_VIEW , Uri.parse(url));          startActivity(   in );          return true
android:scrollbarStyle スクロールバー
WebViewには、スクロールバーの を するプロパティがあります.android:scrollbarStyleはinsideOverlayでもoutsideOverlayでも、2つの いはSCROLLBARS_です.INSIDE_OVERLaYのスタイルはスクロールバーが のpageの で、cssの のpaddingのようで、コードの のこの を て、とてもはっきりしています.
mWebView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);

: »android WebView ;