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

时间:2015-03-23 01:59:21

标签: java android string subscript superscript

我正在使用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));

&#34; NEXT&#34;并且&#34; PREVIOUS&#34;按钮允许用户通过递增/递减&#34;索引&#34;来移动问题。

因此,正因为如此,活动永远不会知道(我不会想到)哪些问题/答案需要文字为上标,以及为什么我希望能够设置问题/答案子当我将问题/答案输入数组时,我自己/上标。可以这样做吗?

编辑:@jared burrows在聊天方面非常有帮助,并且帮助我几乎达到了问题的终点。我现在能够使用setText(Html.fromHtml());在我的textview(问题文本)上,它正确显示下标和上标。但是在我的按钮(答案)上,我试图采用相同的策略并且它的工作原理并不相同。 &#34; X 2 &#34;只是变成&#34; X2&#34;。为什么是这样?为什么我的按钮不像文本视图那样接受html。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

答案是@Jared Burrows和AlanV的帮助。谢谢你们俩。

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

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

因此,要允许按钮正确使用html,必须将该属性设置为false。

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

再次感谢Jared Burrows和AlanV。