Android将文本放在html中

时间:2015-04-18 08:29:18

标签: android html webview

我有一个像这样的html文件:

<body>
    <h2>My html</h2>

    <p> You could save @value per year.</p>

</body>

我在Android中使用WebView加载此页面

我得到了一个需要用@value替换的存储值,这可能吗?

更新我需要使用它的PagerAdapterClass:

 @Override
    public Object instantiateItem(ViewGroup container, final int position) {

        WebView Content;
        inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View itemView = inflater.inflate(R.layout.view_pager_item, container,
                false);
       Content= (WebView) itemView.findViewById(R.id.iaps_url);
     Content.loadUrl(myUrl.get(position));
        ((ViewPager) container).addView(itemView);

        return itemView;
    }

myUrl.get(position)代表文件位置,如“file:///android_asset/ScreenOne.html”

2 个答案:

答案 0 :(得分:1)

首先从assets / raw读取HTML到String。然后使用字符串的replaceAll函数。

InputStream is = getAssets().open("webpage.html");
int size = is.available();

byte[] buffer = new byte[size];
is.read(buffer);
is.close();

String page = new String(buffer);
page = page.replace("@value", "new string");

WebView webview = (WebView)this.findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
webview.loadDataWithBaseURL("", page, "text/html", "UTF-8", "");

答案 1 :(得分:0)

您好您可以使用Android JavaScript Bridge技术。请看下面的步骤。

步骤1.默认情况下,为了在Web视图中启用Java脚本,将禁用JavaScript。您可以通过附加到webview的WebSettings启用,然后使用setJavaScriptEnabled()

启用javascript

例如

WebView myWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);

步骤2.将java脚本代码构建为android代码

要绑定javascript和android代码,它调用addJavascriptInterface()。传递一个类实例以绑定到您的JavaScript和一个JavaScript可以调用以访问该类的接口名称。 例如,您可以在Android应用程序中包含以下类:

public class WebAppInterface {
    Context mContext;

    /** Instantiate the interface and set the context */
    WebAppInterface(Context c) {
        mContext = c;
    }

    /** call the stored value from java to javascript */
    @JavascriptInterface
    public integer getStoreValue() {
        return 1;
    }
}

您可以使用addJavascriptInterface()将此类绑定到在WebView中运行的JavaScript,并将界面命名为Android。例如:

WebView webView = (WebView) findViewById(R.id.webview);
webView.addJavascriptInterface(new WebAppInterface(this), "Android");

这将在WebView中创建一个名为Android for JavaScript的界面。此时,您的Web应用程序可以访问WebAppInterface类。例如,这里有一些HTML和JavaScript在html widnow加载时使用新接口调用java存储值:@ see this link

<html>
<script type="text/javascript">
    function getStoredValue() {
     var output = document.getElementById('values');
    output.innerHTML = Android.getStoreValue();

}
</script>
<body onload="getStoredValue()">
    <h2>My html</h2>

    <p> You could save <a id= 'values'>

        </a>  per year.</p>

</body>

</html>

如果您有任何疑问,请告诉我,谢谢。