我在我的财务应用程序中使用MathJax库将字符串格式化为漂亮的数学公式。效果很好,但我现在对代码不满意。我要做的是获取每个mathjaxview的实例,然后在库中使用自定义的setText函数,只需在源代码中即可:
final MathJaxView mathJaxViewStockCall = findViewById(R.id.mathjax_stock_callview_id);
final MathJaxView mathJaxViewStockPut = findViewById(R.id.mathjax_stock_putview_id);
final MathJaxView mathJaxViewD1Stock = findViewById(R.id.mathjax_stock_d1_view_id);
final MathJaxView mathJaxViewD2Stock = findViewById(R.id.mathjax_stock_d2_view_id);
String call_stock = "$\\ c = SN(d_1) -Xe^{-r(T-t)} N(d_2)$";
String put_stock = "$\\ p = Xe^{-r(T-t)} N(-d_2) - SN(-d_1)$";
mathJaxViewStockCall.setText(call_stock);
mathJaxViewStockPut.setText(put_stock);
//d1, d1 aktie
String d1_stock = "$ d_1 = \\frac{ln(S/X) + (r + \\sigma^2/2)(T - t)}{\\sigma \\sqrt {T-t}}$";
String d2_stock = "$ d_2 = \\frac{ln(S/X) + (r - \\sigma^2/2)(T - t)}{\\sigma \\sqrt {T-t}}$";
String d2_abbrev_stock = "$ = d_1 - \\sigma \\sqrt {T-t}$";
mathJaxViewD1Stock.setText(d1_stock);
mathJaxViewD2Stock.setText(d2_stock);
mathJaxViewD2AbbrevStock.setText(d2_abbrev_stock);
我想做的是在xml文件中使用自定义(覆盖)的setText方法,例如:
<io.github.sidvenu.mathjaxview.MathJaxView
android:id="@+id/mathjax_stock_callview_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
.... use the customized settext here
/>
因为这样我就可以将所有mathjax原始公式放在values / string-folder中,并通过它从那里获取字符串
@string/.....
答案 0 :(得分:1)
您可以使用Android's Data Binding library,然后为setText()
属性创建自己的android:text
的{{3}}实现(或者可以使用自己的属性-实际上,实际上并没有除非您的应用中有特殊用例,否则问题就不那么重要了。然后,将所有代码放入所述适配器,即可完成。这样,您将不再需要显式执行代码来填充小部件,而是通过数据绑定生成的代码“在后台”处理所有小部件。