如何在字符串中设置下标和上标文本(例如数学指数)
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
这个问题的答案是@Jared Burrows 和 AlanV 的综合帮助。所以谢谢你们。
view.setText(Html.fromHtml(stringGoesHere));
这确实有效,但由于(我认为)Android 5.0 中的一些令人沮丧的功能,开箱即用它不适用于按钮。按钮自动设置为全部大写,因此,它会覆盖 html 格式。
因此,要让按钮能够正确使用 html,您必须将该属性设置为 false。
<button
android:textAllCaps="false";/>
再次感谢 Jared Burrows 和 AlanV。
我正在开发一个 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
这个问题的答案是@Jared Burrows 和 AlanV 的综合帮助。所以谢谢你们。
view.setText(Html.fromHtml(stringGoesHere));
这确实有效,但由于(我认为)Android 5.0 中的一些令人沮丧的功能,开箱即用它不适用于按钮。按钮自动设置为全部大写,因此,它会覆盖 html 格式。
因此,要让按钮能够正确使用 html,您必须将该属性设置为 false。
<button
android:textAllCaps="false";/>
再次感谢 Jared Burrows 和 AlanV。