webview.getSettings().setJavaScriptEnabled(true);
webview.addJavascriptInterface(object,"name");//把Name="name"的對(duì)象添加到object中。object如果是this,就是window.name
webview.loadUrl("file:///android_asset/index.html");//注意這個(gè)資源的位置是跟res并列的文件夾下。
js或html中調(diào)用android中方法代碼:
或js中 window.name.java中的方法();
android中調(diào)用js的function方法:
Callfunction(){
webview.loadUrl("javascript: function ()");
}
需要注意的地方,很多數(shù)據(jù)類型js中不認(rèn)識(shí),最好是在android那邊封裝好,提供必要的方法接口。比如傳到j(luò)s中的list,在js中是沒辦法去得到里面的元素的。
addJavascriptInterface:addJavascriptInterface方法中要綁定的Java對(duì)象及方法要運(yùn)行在另外的線程中,不能運(yùn)行在構(gòu)造他的線程中,也就是說不能運(yùn)行在當(dāng)前的activity線程中,就是把這個(gè)方法綁定到頁(yè)面中,js也可以調(diào)用
文檔中的解釋:
Use this function to bind an object to Javascript so that the methods can be accessed from Javascript.
The Java object that is bound runs in another thread and not in the thread that it was constructed in.
Demo代碼:
JavaJsDemo.java
package com.demo.android.JavaJsDemo;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import java.util.ArrayList;
import java.util.List;
public class JavaJsDemo extends Activity {
/** Called when the activity is first created. */
private WebView web;
public List<String> list;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initData();
setContentView(R.layout.main);
web = (WebView)this.findViewById(R.id.webview);
//開啟javascript設(shè)置
web.getSettings().setJavaScriptEnabled(true);
//把RIAExample的一個(gè)實(shí)例添加到j(luò)s的全局對(duì)象window中
//這樣就可以使用window.javatojs來調(diào)用它的方法
web.addJavascriptInterface(this, "javatojs");
//加載網(wǎng)頁(yè)
web.loadUrl("file:///android_asset/index.html");
}
void initData(){
list=new ArrayList<String>();
for(int i=0;i<5;i++){
list.add("我是List中的第"+(i+1)+"行");
}
}
/**
* 該方法將在js腳本中,通過window.javatojs.....()進(jìn)行調(diào)用
* @return
*/
public Object getObject(int index){
return list.get(index);
}
public int getSize(){
return list.size();
}
public void Callfunction(){
web.loadUrl("javascript: GetList()");
}
}
index.html
DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>demotitle>
<script language="javascript">
function GetList(){
var i=window.javatojs.getSize();
for(var n=0;n<i;n++){
var jsdata= window.javatojs.getObject(n);//拿到activity里面的屬性javadata
var datalistdiv = document.getElementById("datalist"); //得到頁(yè)面的div
pnode = document.createElement("p");//創(chuàng)建一個(gè)p標(biāo)簽,再建個(gè)textnode
tnode = document.createTextNode(jsdata);
pnode.appendChild(tnode);//p中加入數(shù)據(jù)
datalistdiv.appendChild(pnode);//div中鍵入新的p
}
}
script>
head>
<body onload="javascript:window.javatojs.Callfunction()">//調(diào)用java方法
<div id = "datalist">
this is a demo
div>
body>
html>
2. 純數(shù)字 android:numeric="true" 這條可以讓輸入法自動(dòng)變?yōu)閿?shù)字輸入鍵盤,同時(shí)僅允許0-9的數(shù)字輸入
3. 僅允許 android:capitalize="cwj1987" 這樣僅允許接受輸入cwj1987,一般用于密碼驗(yàn)證
下面是一些擴(kuò)展的風(fēng)格屬性
android:editable="false" 設(shè)置EditText不可編輯
android:singleLine="true" 強(qiáng)制輸入的內(nèi)容在單行
android:ellipsize="end" 自動(dòng)隱藏尾部溢出數(shù)據(jù),一般用于文字內(nèi)容過長(zhǎng)一行無法全部顯示時(shí)。