Android上的化学公式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);

在您的布局文件中:

<com.rana.equationview.EquationView
 android:id="@+id/equationViewChem"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"/>

enter image description here

希望这有助于某人。

另一答案

我想你找到了一个适合你的解决方案。也许,如果有一个规则要知道符号何时是下标或上标,或者你必须使用的spansize,你可以编写一个方法来解析给定的字符串作为字符串并自动提供格式化的html输出。

要做到这一点,并假设有特定的规则,您可以使用有限状态机,将文本字符串“编译”到您需要的html输出。

如果您正在寻找这样的东西,请告诉我,我们也许能够解决这个问题。

另一个选择是查看(在Internet中)是否找到满足您需求的字体(或者可能构建自己的字体)。您可以导入将字体文件放在assets文件夹中的字体,并在源文件中设置它。

以上是关于Android上的化学公式的主要内容,如果未能解决你的问题,请参考以下文章

图片转换为 latex 公式,识别图片中Latex公式,支持数学公式,化学公式,物理公式和生物公式,附Java代码和测试效果

化学公式编辑用什么软件

anki2.1中使用latex,使用 MathJax 渲染latex格式的数学公式,化学公式

化学公式的Δp=Kb的推导和各字母的含义。

Android 上的 Kotlin:如何在片段中使用数据库中的 LiveData?

如何使用 Android 片段?