2011-04-19 66 views
2

我已經嘗試將MathML代碼放入WebView中,並且它不能正確呈現。我做錯了什麼?WebView和MathML

import android.app.Activity; 
import android.os.Bundle; 
import android.webkit.WebView; 

public class HelloWebView extends Activity { 
WebView mWebView; 
String mathml = "<html><body><math xmlns=\"http://www.w3.org/1998/Math/MathML\"><mrow><msup> <mi>x</mi> <mn>2</mn> </msup></mrow></math> END OF TEST</body></html>"; 

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

    mWebView = (WebView) findViewById(R.id.webview); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.loadData(mathml, "text/html", "utf-8"); 
    } 
} 

回答

1

你應該看看MathJax(www.mathjax.org)。它是一個用於顯示MathML的JavaScript引擎。實際上,它用於在StackExchange中顯示數學。

+0

IPython在他們的Notebook中也使用Mathjax,它的工作原理非常好。 – 2013-03-07 22:19:00

2

String mathml使用了MathML標籤。 WebView無法渲染MathML標籤。我嘗試使用MathJax,但它需要16MB的文件來渲染數學方程。我不知道MathJax如何在Android中使用,因爲它的大小。

+0

如果您的應用程序可以訪問互聯網,則可以使用他們的CDN。我使用CDN來避免笨重的APK和onlne版本很好。 – Mani 2017-01-06 05:13:21

0
loadDataWithBaseURL("http://bar", 
       "<html><head>" + 
         " <meta name=\"viewport\" content=\"width=device-width, user-scalable=yes\" />" + 
         "</head>" + 
         "" + 
         "<body style=\"font-size:18px\" >" + 
         text + 
         "<script type=\"text/x-mathjax-config\">" + 
         " MathJax.Hub.Config({\n" + 
         " CommonHTML: { linebreaks: { automatic: true },EqnChunk:(MathJax.Hub.Browser.isMobile?10:50) },displayAlign: \"left\",\n" + 
         " \"HTML-CSS\": { linebreaks: { automatic: true } ," + 
         "\n" + 
         " preferredFont: \"STIX\"}," + 
         "extensions: [\"tex2jax.js\"],messageStyle:\"none\"," + 
         "jax: [\"input/TeX\", \"input/MathML\",\"output/HTML-CSS\"]," + 
         "tex2jax: {inlineMath: [['$','$'],['\\\\(','\\\\)']]}" + 
         "});" + 
         "</script>" + 
         "<script type=\"text/javascript\" async src=\"file:///android_asset/MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML\"></script>" + 
         "" + 
         "</body>" + 
         "</html>", "text/html", "utf-8", ""); 

     loadUrl("javascript:MathJax.Hub.Queue(['Typeset',MathJax.Hub]);"); 
+0

你需要把這個代碼加載到MathJax的mathml。 https://www.mathjax.org/ – Yogendra 2017-03-31 11:43:45

+0

雖然這段代碼可能解決這個問題,[包括解釋](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)真的有助於提高你的文章的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。 [編輯]你的問題中的這些信息。 – 2017-03-31 12:03:21