古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。这篇文章主要讲述Android上的化学公式相关的知识,希望能为你提供帮助。
我正在开发一个android项目,我想渲染一些化学公式。
我写了下面的代码,得到了以下结果。
我创建一个自定义字符串并在textview中显示它。
但我的问题是:这是最好的方法吗?还有另一种方法可以解决这个问题吗?
str = new SpannableString(html.fromHtml("2H<
sup>
+<
/sup>
+ So<
sub size = 2>
4<
/sub>
<
sup size = 2>
2-<
/sup>
-->
H<
sub size =2>
2<
/sub>
So<
sub size = 2>
4<
/sub>
"));
ss1.setSpan(new RelativeSizeSpan(0.6f), 2,3, 0);
// set size
ss1.setSpan(new RelativeSizeSpan(0.6f), 8,11, 0);
// set size
ss1.setSpan(new RelativeSizeSpan(0.6f), 17,18, 0);
// set size
ss1.setSpan(new RelativeSizeSpan(0.6f), 20,21, 0);
// set size
TempF.setText(ss1,TextView.BufferType.SPANNABLE);
答案我不认为有更好的方法。
不幸的是
Html.fromHtml()
忽略了<
font size="n">
标签,所以这些跨度需要手动添加,就像你所做的那样。另一答案我有一个类似的问题需要解决。我通过扩展WebView并在后台使用javascript创建了一个简单的库。 https://github.com/RanaRanvijaySingh/EquationView
String strChem = "Chemistry: (ce{CO2 + C ->
2 CO})";
EquationView equationViewChem = findViewById(R.id.equationViewChem);
equationViewChem.setText(strChem);
【Android上的化学公式】在您的布局文件中:
<
com.rana.equationview.EquationView
android:id="@+id/equationViewChem"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
文章图片
希望这有助于某人。
另一答案我想你找到了一个适合你的解决方案。也许,如果有一个规则要知道符号何时是下标或上标,或者你必须使用的spansize,你可以编写一个方法来解析给定的字符串作为字符串并自动提供格式化的html输出。
要做到这一点,并假设有特定的规则,您可以使用有限状态机,将文本字符串“编译”到您需要的html输出。
如果您正在寻找这样的东西,请告诉我,我们也许能够解决这个问题。
另一个选择是查看(在Internet中)是否找到满足您需求的字体(或者可能构建自己的字体)。您可以导入将字体文件放在assets文件夹中的字体,并在源文件中设置它。
推荐阅读
- Android(以编程方式添加Textview,而不是将文本包装到下一行)
- 如何以编程方式制作可绘制的形状(Android)
- 5个最佳javascript和jQuery工具提示插件
- 5个最佳jQuery社交共享插件
- 5个最佳网页预加载器插件
- 7个最好的Google Material Web开发免费框架(css和javascript)
- 10个适用于JavaScript和jQuery的图库和图片查看器插件
- 十大(适用于Javascript和jQuery的最佳通知库和插件)
- 5+最好的画板,并在画布上手动绘制JavaScript和jQuery插件