
我想查看:
但它只查看一个WebVIEw显示公式:
我的xml代码:
<?xml version="1.0" enCoding="utf-8"?> <relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="fill_parent" androID:layout_height="fill_parent" androID:orIEntation="vertical" ><linearLayout androID:ID="@+ID/topLayout" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:layout_alignParentleft="true" androID:layout_alignParenttop="true" androID:background="#ffd0e3e5" androID:g@R_403_6610@ty="center" androID:paddingBottom="6dp" androID:paddingtop="5dp" > <TextVIEw androID:ID="@+ID/textTitle" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:text="TextVIEw" androID:textcolor="#ff33203d" androID:textSize="18sp" /></linearLayout><WebVIEw androID:ID="@+ID/txtQuestion" androID:layout_wIDth="match_parent" androID:layout_height="180dp" androID:layout_alignParentleft="true" androID:layout_below="@+ID/topLayout" androID:layout_weight="1" /><ScrollVIEw androID:ID="@+ID/scrollVIEw1" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:layout_below="@+ID/txtQuestion" androID:layout_margintop="10dp" androID:layout_weight="0" > <linearLayout androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:orIEntation="vertical" > <linearLayout androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:orIEntation="horizontal" > <Radiobutton androID:layout_wIDth="wrap_content" androID:layout_height="match_parent" /> <WebVIEw androID:ID="@+ID/WebVIEw04" androID:layout_wIDth="fill_parent" androID:layout_height="170dp" androID:layout_weight="1" /> </linearLayout> <linearLayout androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:orIEntation="horizontal" > <Radiobutton androID:layout_wIDth="wrap_content" androID:layout_height="match_parent" /> <WebVIEw androID:ID="@+ID/WebVIEw01" androID:layout_wIDth="fill_parent" androID:layout_height="165dp" androID:layout_margintop="2dp" androID:layout_weight="1" /> </linearLayout> <linearLayout androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:orIEntation="horizontal" > <Radiobutton androID:layout_wIDth="wrap_content" androID:layout_height="match_parent" /> <WebVIEw androID:ID="@+ID/WebVIEw02" androID:layout_wIDth="fill_parent" androID:layout_height="80dp" androID:layout_margintop="2dp" androID:layout_weight="1" /> </linearLayout> <linearLayout androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:orIEntation="horizontal" > <Radiobutton androID:layout_wIDth="wrap_content" androID:layout_height="match_parent" /> <WebVIEw androID:ID="@+ID/WebVIEw03" androID:layout_wIDth="fill_parent" androID:layout_height="80dp" androID:layout_margintop="2dp" androID:layout_weight="1" /> </linearLayout> </linearLayout> </ScrollVIEw></relativeLayout>
我的Java代码:
public class MainActivity extends Activity implements VIEw.OnClickListener{ private WebVIEw webVIEwEquationdisplay,webvIEw,WebVIEw04,WebVIEw01,WebVIEw02,WebVIEw03; private String mathML; private int exampleIndex = 0;private String doubleEscapeTeX(String s) { String t=""; for (int i=0; i < s.length(); i++) { if (s.charat(i) == '\'') t += '\'; if (s.charat(i) != '\n') t += s.charat(i); if (s.charat(i) == '\') t += "\"; } return t;}private String getExample(int index) { return getResources().getStringArray(R.array.mml_examples)[index];}private final String MLxml="<math xmlns=\"http://www.w3.org/1998/Math/MathML\">"+"<mstyle displaystyle=\"true\">"+"<mrow> <munderover> <mo>∫</mo> <mn>-1</mn> <mn>+1</mn>" +" </munderover> <mfrac> <mrow> <mi>d</mi> <mi>x</mi> </mrow>" +" <mi>x</mi> </mfrac></mrow></mstyle></math> Text ......";/** Called when the activity is first created. */@OverrIDepublic voID onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); webvIEw = (WebVIEw) findVIEwByID(R.ID.txtQuestion); webvIEw.getSettings().setJavaScriptEnabled(true); webvIEw.getSettings().setBuiltInZoomControls(true); initiateWebVIEw(MLxml,webvIEw); WebVIEw04 = (WebVIEw) findVIEwByID(R.ID.WebVIEw04); WebVIEw04.getSettings().setJavaScriptEnabled(true); WebVIEw04.getSettings().setBuiltInZoomControls(true); initiateWebVIEw(MLxml,WebVIEw04); WebVIEw01 = (WebVIEw) findVIEwByID(R.ID.WebVIEw01); WebVIEw01.getSettings().setJavaScriptEnabled(true); WebVIEw01.getSettings().setBuiltInZoomControls(true); initiateWebVIEw(MLxml,WebVIEw01); WebVIEw02 = (WebVIEw) findVIEwByID(R.ID.WebVIEw02); WebVIEw02.getSettings().setJavaScriptEnabled(true); WebVIEw02.getSettings().setBuiltInZoomControls(true); initiateWebVIEw(MLxml,WebVIEw02); WebVIEw03 = (WebVIEw) findVIEwByID(R.ID.WebVIEw03); WebVIEw03.getSettings().setJavaScriptEnabled(true); WebVIEw03.getSettings().setBuiltInZoomControls(true); initiateWebVIEw(MLxml,WebVIEw03);}private voID initiateWebVIEw( String formulaML,WebVIEw formulaWebvIEw){ mathML=formulaML; webVIEwEquationdisplay=formulaWebvIEw; webVIEwEquationdisplay.setWebVIEwClIEnt(new WebVIEwClIEnt() { @OverrIDe public voID onPageFinished(WebVIEw vIEw,String url) { super.onPageFinished(vIEw,url); webVIEwEquationdisplay.loadUrl("JavaScript:document.getElementByID('math').INNERHTML='" +doubleEscapeTeX(mathML)+"';"); webVIEwEquationdisplay.loadUrl("JavaScript:MathJax.Hub.Queue(['Typeset',MathJax.Hub]);"); } }); final String mathJaxOfflineUrl = "file:///androID_asset/MathJax/MathJax.Js"; webVIEwEquationdisplay.loadDataWithBaseURL("http://bar/","<script type='text/x-mathjax-config'>" +"MathJax.Hub.Config({ " +"showMathMenu: false," +"jax: ['input/MathML','output/HTML-CSS']," // output/SVG +"extensions: ['mml2jax.Js']," +"TeX: { extensions: ['noErrors.Js','noUndefined.Js'] }," // +"jax: ['input/AsciiMath'," // +"extensions: ['asciimath2jax.Js']," // +"AsciiMath: { fixphi: true,useMathMLspacing: true,displaystyle: false,decimalsign: \".\" }," +"});</script>" +"<script type='text/JavaScript' " +"src='"+mathJaxOfflineUrl+"'" +"></script><span ID='math'></span>","text/HTML","utf-8",""); }} } 我流了这个enter link description here的例子.
请帮我!
但是由于WebVIEwClIEnt.onPageFinished()中的语句引用了webVIEwEquationdisplay,并且因为只有在onCreate()完成后才会在主线程上执行此方法(四次),因此最后分配给webVIEwEquationdisplay的WebVIEw将是将始终调用loadUrl()的一个.
解决问题的一种方法是使用方法参数而不是字段.这对于onPageFinished()尤为重要.
private voID initiateWebVIEw(String formulaML,WebVIEw formulaWebvIEw){ formulaWebvIEw.setWebVIEwClIEnt(new WebVIEwClIEnt() { @OverrIDe public voID onPageFinished(WebVIEw vIEw,url); vIEw.loadUrl("JavaScript:document.getElementByID('math').INNERHTML='" +doubleEscapeTeX(formulaML)+"';"); vIEw.loadUrl("JavaScript:MathJax.Hub.Queue(['Typeset',MathJax.Hub]);"); } }); final String mathJaxOfflineUrl = "file:///androID_asset/MathJax/MathJax.Js"; formulaWebvIEw.loadDataWithBaseURL("http://bar/","<script type='text/x-mathjax-config'>" +"MathJax.Hub.Config({ " +"showMathMenu: false," +"jax: ['input/MathML'," // output/SVG +"extensions: ['mml2jax.Js']," +"TeX: { extensions: ['noErrors.Js'," // +"jax: ['input/AsciiMath'," // +"extensions: ['asciimath2jax.Js']," // +"AsciiMath: { fixphi: true," +"});</script>" +"<script type='text/JavaScript' " +"src='"+mathJaxOfflineUrl+"'" +"></script><span ID='math'></span>","");} 总结 以上是内存溢出为你收集整理的如何在Android布局中多个MathJax公式视图全部内容,希望文章能够帮你解决如何在Android布局中多个MathJax公式视图所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)