【问题标题】:chemistry formula on AndroidAndroid上的化学公式
【发布时间】:2014-06-19 03:32:28
【问题描述】:

我正在开发一个安卓项目,我想渲染一些化学公式。

我写了下面的代码,得到了下面的结果。

我创建了一个自定义字符串并在文本视图中显示它。

但我的问题是:这是最好的方法吗?还有其他方法可以处理吗?

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);

【问题讨论】:

  • 您找到了一个很好的解决方案,该解决方案对于许多化学公式来说很容易实现。在 Android 上,您可以在 Canvas、LaTeX、矢量图形(通过库)和许多其他方法上使用特殊的自定义字体来实现相同的结果,但我最喜欢您的解决方案(假设您没有任何其他我没有考虑到的特殊要求)。
  • 谢谢!很好的答案:) SpannableString spannableString = new SpannableString( Html.fromHtml("C10H14N2") ); spannableString.setSpan(new RelativeSizeSpan(0.6f), 1, 3, 0); spannableString.setSpan(new RelativeSizeSpan(0.6f), 4, 6, 0); spannableString.setSpan(new RelativeSizeSpan(0.6f), 7, 8, 0);

标签: android string textview


【解决方案1】:

我认为没有更好的方法。

不幸的是Html.fromHtml() 忽略了&lt;font size="n"&gt; 标记,因此需要手动添加这些跨度,就像您所做的那样。

【讨论】:

    【解决方案2】:

    我有一个类似的问题要解决。我通过扩展 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"/>
    

    希望这对某人有所帮助。

    【讨论】:

      【解决方案3】:

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

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

      如果您正在寻找类似的东西,请告诉我,我们也许可以解决。

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

      【讨论】:

        猜你喜欢
        • 2018-08-07
        • 2012-10-20
        • 2011-05-19
        • 2013-06-06
        • 1970-01-01
        • 2018-04-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-27
        相关资源
        最近更新 更多