导航:首页 > 操作系统 > 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样式相关的资料

热点内容
山东济南生产服务器云主机 浏览:310
算法员跳槽四年 浏览:730
秦九昭算法v0怎么求 浏览:384
斗鱼java 浏览:896
程序员对老师的感谢 浏览:29
什么app能查看银行卡照片 浏览:24
win7pdf虚拟打印 浏览:332
程序员喜欢的女生条件 浏览:123
阿里云服务器ip搭建教程 浏览:85
解压和拉伸这一动画的原理是什么 浏览:740
tbc战士的命令怒吼 浏览:481
idea快捷键看源码 浏览:976
手机碎屏解压工具 浏览:245
jsonrpcphp使用 浏览:566
网上求职系统源码 浏览:699
pdf数字不显示 浏览:890
convertwordtopdf 浏览:253
程序编译基本单位 浏览:23
python分析图片角度 浏览:64
阿里云服务器能复制数据吗 浏览:562