【问题标题】:How to set subscript and superscript text in string (such as math exponents)如何在字符串中设置下标和上标文本(例如数学指数)
【发布时间】:2015-03-24 02:38:18
【问题描述】:

我正在开发一个 Android 应用程序,我需要能够将指数/幂包含到字符串 (Java) 中。我已经进行了一些搜索,似乎我的情况使它变得困难。我研究了诸如 ALT+ 代码和 Unicode 之类的选项。我不完全确定其中任何一个或任何其他选项是否真的可行(奇怪的是,我知道 ALT+ 代码只有 '1' '2' 和 '3' 下标)。

那么,如果有的话,我最好的选择是什么?

我想让它尽可能简单。我有很多字符串要写(比如数学问题),下标/上标数字的需要是随机的。这很容易做到吗?

编辑:我想我含糊其辞。我的应用程序用于学习。并且问题/答案每次都被放入数组中并随机化。我希望能够像现在一样在 Java 文件中设置字符串

question[0].text = "solve x^2 if x=5";

但我不想让用户看到“^2”,而是使用实际的上标。

另一个编辑:

global.java(保存问题/答案的类/结构)

    question[0].question = "Question Text.  I would like to add a superscript or two here, as if it were a math problem";
    question[0].answer[0]. = "Answer 1.  Add a subscript here";
    question[0].answer[1]. = "Answer 2.  Add another superscript here.";
    question[0].answer[2]. = "Answer 3.  Etc.";
    question[0].answer[3]. = "Answer 4.  Etc.";

活动 XML

 <!--QUESTION-->
 <TextView
     android:id="@+id/textQuestion"/>



 <!--ANSWERS-->
 <Button
     android:id="@+id/answerOne"
     android:onClick="checkAnswer"/>

 <Button
     android:id="@+id/answerTwo"
     android:onClick="checkAnswer"/>

 <Button
     android:id="@+id/answerThree"
     android:onClick="checkAnswer"/>

 <Button
     android:id="@+id/answerFour"
     android:onClick="checkAnswer"/>

活动 Java

    //SET QUESTION STRING TO TEXTVIEW
    textQuestion.setText(questionDatabase.getQuestion(index));

    //SET ANSWER STRINGS TO BUTTONS' TEXT
    buttonOne.setText(questionDatabase.getAnswer(index, 0));
    buttonTwo.setText(questionDatabase.getAnswer(index, 1));
    buttonThree.setText(questionDatabase.getAnswer(index, 2));
    buttonFour.setText(questionDatabase.getAnswer(index, 3));

“NEXT”和“PREVIOUS”按钮允许用户通过增加/减少“索引”来浏览问题。

因此,因此,活动永远不知道(我不认为)哪些问题/答案需要文本作为上标,以及为什么我希望能够自己设置问题/答案子/上标我将问题/答案输入到数组中。这个可以吗?

编辑:@jared burrows 在聊天中非常有帮助,帮助我几乎解决了问题。我现在可以使用 setText(Html.fromHtml());在我的文本视图(问题文本)上,它正确显示了下标和上标。但是在我的按钮(答案)上,我尝试采用相同的策略,但效果不一样。 “X2”就变成了“X2”。为什么是这样?为什么我的按钮不像 textview 一样接受 html。

【问题讨论】:

    标签: java android string subscript superscript


    【解决方案1】:

    上标:

    textView.setText(Html.fromHtml("X<sup>2</sup>"));
    

    下标:

    textView.setText(Html.fromHtml("X<sub>2</sub>"));
    

    参考资料:

    Subscript and Superscript a String in Android

    http://www.w3schools.com/tags/tag_sub.asp

    http://www.w3schools.com/tags/tag_sup.asp

    【讨论】:

    • 我以前见过这个解决方案,但这就是我的情况使它变得更加困难的地方。我不知道您是否看到我的编辑/更新。我设置了变量(参见上面的简单示例),并且我希望能够设置这些字符串,并使用上标。该应用程序是为练习题设置的,每个页面都会拉出一个问题字符串,并在按钮中放置 4 个可能的答案。使用您的解决方案,只有当我不使用另一个类/结构来保存变量/问题/答案时,它似乎才有可能。
    • 我再次编辑了主要问题。这次我提供了一些希望更好的信息和代码来帮助您理解我的问题。
    • 我不明白为什么你不能将你的字符串动态添加到Html.fromHtml
    • 也许我不太明白。你看到我最近的更新了吗?这是否有助于更好地解释我的情况?我该如何使用我的特定设置来执行此操作?
    • 是的。如果您将它们静态存储在 global.java 中,那么为什么不:question[0].answer[3] ="X&lt;sub&gt;2&lt;/sub&gt;"
    【解决方案2】:

    这个问题的答案是来自@Jared Burrows 和 AlanV 的帮助。所以谢谢你们俩。

    view.setText(Html.fromHtml(stringGoesHere));
    

    这确实有效,但由于(我认为)Android 5.0 中的一些令人沮丧的功能,它不适用于按钮。按钮会自动设置为全部大写,因此,它会覆盖 html 格式。

    因此,要让按钮能够正确使用 html,您必须将该属性设置为 false。

    <button
        android:textAllCaps="false";/>
    

    再次感谢 Jared Burrows 和 AlanV。

    【讨论】:

    • 如果它完全解决了这个问题,我会的,但遇到同样事情的其他人也会想要完整的答案。不过,我绝对相信他,还有在其他地方帮助过我的 AlanV。
    猜你喜欢
    • 2013-05-09
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    相关资源
    最近更新 更多