Android:WebViewの詳細
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
义齿
1
2
3
4
5
6
基本設定
上の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
に表示されます.
(2)リモートWebページのロード
1
(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
baseUrlが次のように指定されていない場合http://www.jcodecraeer.comでは、この画像は表示されません.
上記の例では、loadDataWithBase URLの使い方を示しています.文字列のhtmlコンテンツを直接ロードします.assetsディレクトリの下のローカルページファイルから読み取る場合があります.次に、
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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 ;