如何在字符串中设置下标和上标文本(例如数学指数)

How to set subscript and superscript text in string (such as math exponents)

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

那么,我最好的选择是什么?

我希望它尽可能简单。我有很多字符串要写(比如数学问题),subscript/superscript 数字的需求是随机的。这可以轻松完成吗?

编辑:我想我含糊不清。我的应用程序用于学习。 questions/answers 每次都放入数组并随机化。我希望能够像现在一样设置 Java 文件中的字符串

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

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

另一个编辑:

global.java(class/structure 包含 questions/answers)

    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.";

Activity 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"/>

Activity 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" 按钮允许用户通过 incrementing/decrementing 和 "index".

来浏览问题

因此,activity 永远不知道(我不认为)哪个 questions/answers 需要文本作为上标,以及为什么我希望能够设置questions/answers sub/superscript 当我输入 questions/answers 到数组时我自己。这能做到吗?

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

上标:

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

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

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

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

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

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

再次感谢 Jared Burrows 和 AlanV。