導航:首頁 > 操作系統 > androidwebview樣式

androidwebview樣式

發布時間:2022-09-05 04:09:25

android webview 怎麼放大縮小

Android:WebView如何設定支持縮放:需要對WebView和WebSettings做一下設定

webview.setVerticalScrollbarOverlay(true); //指定的垂直滾動條有疊加樣式

WebSettings settings = webview.getSettings();
settings.setUseWideViewPort(true);//設定支持viewport
settings.setLoadWithOverviewMode(true);
settings.setBuiltInZoomControls(true);
settings.setSupportZoom(true);//設定支持縮放

html界面meta標簽
<metaname="viewport"content="height= [pixel_value| "device-height"] ,width= [pixel_value| "device-width"] ,initial-scale=float_value,//初始縮放minimum-scale=float_value,//最小maximum-scale=float_value,//最大user-scalable= ["yes" | "no"]//是否允許用戶對頁面縮放 "/>

例如:<meta name="viewport" content="width=device-width,user-scalable=yes initial-scale=1.0, maximum-scale=2.0">-->設定支持縮放,最大兩倍縮放

❷ Android WebView 在開發過程中有哪些坑

自Android 4.4起,引入了webView,使用需要注意的事項:
1.多線程
如果在子線程中調用WebView的相關方法,而不在UI線程,則可能會出現無法預料的錯誤。
所以,當自己的程序中需要用到多線程時候,也請使用 runOnUiThread()方法來保證關於WebView的操作是在UI線程中進行的:
runOnUiThread(newRunnable(){
@Override
publicvoid run(){
// Code for WebView goes here
}
});

2.線程阻塞
永遠不要阻塞UI線程,這是開發Android程序的一個真理。雖然是真理,咱們卻往往不自覺的犯一些錯誤違背它,一個開發中常犯的錯誤就是:在UI線程中去等待javaScript 的回調。
例如:
// This code is BAD and will block the UI thread
webView.loadUrl("javascript:fn()"); while(result ==null){
Thread.sleep(100); }

千萬不要這樣做,Android 4.4中,提供了新的Api來做這件事情。 evaluateJavascript() 就是專門來非同步執行JavaScript代碼的。
3.evaluateJavascript() 方法
專門用於非同步調用JavaScript方法,並且能夠得到一個回調結果。
示例:
mWebView.evaluateJavascript(script, new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
//TODO
}
});

4.處理 WebView 中 url 跳轉
新版WebView對於自定義scheme的url跳轉,新增了更為嚴格的限制條件。 當實現了 shouldOverrideUrlLoading() 或 shouldInterceptRequest() 回調,WebView 也只會在跳轉url是合法Url時才會跳轉。
例如,如果使用這樣一個url :
<ahref="showProfile"]]>Show Profile</a>

shouldOverrideUrlLoading() 將不會被調用。
正確的使用方式是:
<ahref="example-app:showProfile"]]>Show Profile</a>

對應的檢測Url跳轉的方式:
// The URL scheme should be non-hierarchical (no trailing slashes)
privatestaticfinalString APP_SCHEME ="example-app:";

@Override publicboolean shouldOverrideUrlLoading(WebView view,String
url){
if(url.startsWith(APP_SCHEME)){
urlData =URLDecoder.decode(url.substring(APP_SCHEME.length()),"UTF-8");
respondToData(urlData);
returntrue;
}
returnfalse; }

當然,也可以這樣使用:
webView.loadDataWithBaseURL("example-app://example.co.uk/", HTML_DATA,
null,"UTF-8",null);

5.UserAgent 變化
如果自己的App對應的服務端程序,會根據客戶端傳來的UserAgent來做不同的事情,那麼需要注意的是,新版本的WebView中,UserAgent有了些微妙的改變:
Mozilla/5.0 (Linux; Android 4.4; Nexus 4 Build/KRT16H)
AppleWebKit/537.36(KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0
Mobile Safari/537.36

使用 getDefaultUserAgent()方法可以獲取默認的UserAgent,也可以通過:
mWebView.getSettings().setUserAgentString(ua);
mWebView.getSettings().getUserAgentString();

來設置和獲取自定義的UserAgent。
6.使用addJavascriptInterface()的注意事項
從Android4.2開始。 只有添加 @JavascriptInterface 聲明的Java方法才可以被JavaScript調用,例如:
class JsObject {
@JavascriptInterface
public String toString() { return "injectedObject"; }
}
webView.addJavascriptInterface(new JsObject(), "injectedObject");
webView.loadData("", "text/html", null);
webView.loadUrl("javascript:alert(injectedObject.toString())");

7.Remote Debugging
新版的WebView還提供了一個很厲害的功能:使用Chrome來調試運行在WebView中的程序。

❸ Android WebView 載入網頁 樣式錯誤

這個就是明顯的瀏覽器兼容性問題了

做web前端開發最常見的一個問題,就是瀏覽器兼容問題

建議:

  1. 使用HTML5開進行開發

  2. 使用ccs3的相差屬性來控制樣式

  3. 使用google瀏覽器來調式界面

❹ android上給webview界面進度條的樣式怎麼設置

水蒸氣

❺ 如何完美解決android webview支持input type = file

在Android中,當我們通過WebView打開一個頁面時,如果裡面有元素是<input type=」file」…>類型的,WebView只能正常的顯示樣式,但是是無法點擊的。要解決這個問題,我們需要重寫WebChromeClient。
下面直接給出Demo代碼:
Activity文件:
public class MainActivity extends Activity {

private final String host = "demo.com";
private final String urlAddress = "http://" + host;

private WebView web;
private ProgressBar progressBar;

private ValueCallback<Uri> mUploadMessage;
private final static int FILECHOOSER_RESULTCODE = 1;

@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
if (requestCode == FILECHOOSER_RESULTCODE) {
if (null == mUploadMessage) return;
Uri result = intent == null || resultCode != RESULT_OK ? null
: intent.getData();
mUploadMessage.onReceiveValue(result);
mUploadMessage = null;
}
}

/**
* Called when the activity is first created.
*/
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

web = (WebView) findViewById(R.id.webView1);
progressBar = (ProgressBar) findViewById(R.id.progressBar1);

WebSettings settings = web.getSettings();
settings.setJavaScriptEnabled(true);
web.loadUrl(urlAddress);
web.setWebViewClient(new MyWebViewClient());

web.setWebChromeClient(new WebChromeClient() {
//關鍵代碼,以下函數是沒有API文檔的,所以在Eclipse中會報錯,如果添加了@Override關鍵字在這里的話。

// For Android 3.0+
public void openFileChooser(ValueCallback<Uri> uploadMsg) {

mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
MainActivity.this.startActivityForResult(Intent.createChooser(i, "File Chooser"), FILECHOOSER_RESULTCODE);

}

// For Android 3.0+
public void openFileChooser(ValueCallback uploadMsg, String acceptType) {
mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("*/*");
MainActivity.this.startActivityForResult(
Intent.createChooser(i, "File Browser"),
FILECHOOSER_RESULTCODE);
}

//For Android 4.1
public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) {
mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
MainActivity.this.startActivityForResult(Intent.createChooser(i, "File Chooser"), MainActivity.FILECHOOSER_RESULTCODE);

}
});

// setContentView(web);
}

private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (Uri.parse(url).getHost().equals(host)) {
// This is my web site, so do not override; let my WebView load the page
return false;
}
// Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}

@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
}

@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);

progressBar.setVisibility(View.GONE);
}
}

//flipscreen not loading again
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}

// 捕捉「回退」按鍵,讓WebView能回退到上一頁,而不是直接關閉Activity。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && web.canGoBack()) {
web.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
}

❻ Android開發:用webview做的瀏覽器怎麼用兩個文本框分別顯示當前網頁標題和地址

這里就假設你的標題文本框是TextView titleTextView, 地址文本框是TextView urlTextView。


//設置WebChromeClient來接受網頁載入後得到的標題,然後設置給title
webView.setWebChromeClient(newWebChromeClient(){
@Override
publicvoidonReceivedTitle(WebViewview,Stringtitle){
super.onReceivedTitle(view,title);
titleTextView.setText(title);
}
}
)

//設置WebViewClient來獲取網頁url
webView.setWebViewClient(newHelpClient(){
@Override
publicvoidonPageFinished(WebViewview,Stringurl){
super.onPageFinished(view,url);
urlTextView.setText(url);
}
@Override
publicvoidonPageStarted(WebViewview,Stringurl,Bitmapfavicon){
super.onPageStarted(view,url,favicon);
}
});

❼ android webview 載入網頁。當修改樣式之後,無法更新

在webview載入JQuery Mobile做的頁面的時候,載入不了頁面中的css和js,但是在CP的瀏覽器上是可以的顯示,經查資料知道,知道需要通過設置setJavaScriptEnabled的值為

true的時候才可以,代碼如圖:

在設置完成setJavaScriptEndabled之後,重新編譯運行到手機,效果就出來了,如圖:

詳細

❽ 關於Android中WebView在載入網頁的時候,怎樣應用本地的CSS效果

WebView(網路視圖)能載入顯示網頁,可以將其視為一個瀏覽器。它使用了WebKit渲染引擎載入顯示網頁,實現WebView有以下兩種不同的方法:
第一種方法的步驟:
1.在要Activity中實例化WebView組件:WebView webView = new WebView(this);
2.調用WebView的loadUrl()方法,設置WevView要顯示的網頁:
互聯網用:webView.loadUrl("");
本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets 文件中
3.調用Activity的setContentView( )方法來顯示網頁視圖
4.用WebView點鏈接看了很多頁以後為了讓WebView支持回退功能,需要覆蓋覆蓋Activity類的onKeyDown()方法,如果不做任何處理,點擊系統回退剪鍵,整個瀏覽器會調用finish()而結束自身,而不是回退到上一頁面
5.需要在AndroidManifest.xml文件中添加許可權,否則會出現Web page not available錯誤。
<uses-permission android:name="android.permission.INTERNET" />

第二種方法的步驟:
1、在布局文件中聲明WebView
2、在Activity中實例化WebView
3、調用WebView的loadUrl( )方法,設置WevView要顯示的網頁
4、為了讓WebView能夠響應超鏈接功能,調用setWebViewClient( )方法,設置 WebView視圖
5、用WebView點鏈接看了很多頁以後為了讓WebView支持回退功能,需要覆蓋覆蓋Activity類的onKeyDown()方法,如果不做任何處理,點擊系統回退剪鍵,整個瀏覽器會調用finish()而結束自身,而不是回退到上一頁面
6、需要在AndroidManifest.xml文件中添加許可權,否則出現Web page not available錯誤。
<uses-permission android:name="android.permission.INTERNET"/>

❾ 安卓開發WebView載入網頁樣式在本地替換

可以用js載入css。

webview.setWebViewClient(new WebViewClient() {
....
public void onPageFinished(WebView view, String url) {
src="file:///android_asset/xxx.js"
String baseUrl = "file:///android_asset";
view.loadDataWithBaseURL(baseUrl, strHtml, "text/html", "utf-8", null);
}
....
}

js文件如下:
function loadjscssfile(filename,filetype){

if(filetype == "js"){
var fileref = document.createElement('script');
fileref.setAttribute("type","text/javascript");
fileref.setAttribute("src",filename);
}else if(filetype == "css"){

var fileref = document.createElement('link');
fileref.setAttribute("rel","stylesheet");
fileref.setAttribute("type","text/css");
fileref.setAttribute("href",filename);
}
if(typeof fileref != "undefined"){
document.getElementsByTagName("head")[0].appendChild(fileref);
}

}
調用方式:
loadjscssfile("test.css","css");

要是還不明白 你來我們群里說吧 這里是開發者互相學習交流的 有大神 讓他們給你解釋你的疑問 號 碼look at my n a m e.....

閱讀全文

與androidwebview樣式相關的資料

熱點內容
rar鎖定壓縮文件 瀏覽:871
安卓id號碼怎麼更換 瀏覽:524
db2如何連接伺服器資料庫 瀏覽:630
wordtopdf轉換 瀏覽:840
雲伺服器在哪設置ftp 瀏覽:622
黑客社會工程學攻擊pdf 瀏覽:998
專業中穎單片機程序開發 瀏覽:426
python多進程多線程實例 瀏覽:639
山東濟南生產伺服器雲主機 瀏覽:310
演算法員跳槽四年 瀏覽:730
秦九昭演算法v0怎麼求 瀏覽:384
斗魚java 瀏覽:896
程序員對老師的感謝 瀏覽:29
什麼app能查看銀行卡照片 瀏覽:24
win7pdf虛擬列印 瀏覽:332
程序員喜歡的女生條件 瀏覽:123
阿里雲伺服器ip搭建教程 瀏覽:85
解壓和拉伸這一動畫的原理是什麼 瀏覽:740
tbc戰士的命令怒吼 瀏覽:481
idea快捷鍵看源碼 瀏覽:976