如何在TextView中键入x ^ 2(下标和上标)

时间:2017-12-13 05:08:31

标签: java android

我正在Android Studio(Mac OS)中制作一个计算器应用程序,其中我试图包含 square(x ^ 2) Button。 我把我的方块设置为TextView。

我已经尝试了所有提到的链接,但没有一个能让我输入正确的等式格式。

<TextView
    android:id="@+id/square"
    style="?android:attr/borderlessButtonStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="top"
    android:layout_marginBottom="-3dp"
    android:layout_marginLeft="-20dp"
    android:layout_marginStart="-5dp"
    android:padding="15dp"
    android:textColor="@color/black"
    android:textSize="18sp" />

我还在MainActivity.java文件中尝试了以下代码: -

squareButton = findViewById(R.id.square);
squareButton.setText(Html.fromHtml("x<sup>2</sup>"));

尝试了一些例子 Source 1 Source 2没有用!

P.S。我设置了minSdkVersion 14targetSdkVersion 26

3 个答案:

答案 0 :(得分:3)

Android原生支持sub / superscript类型文本,称为SubscriptSpanSuperscriptSpan

上标的样本用法(例如X ^ 2)

String text = "X2";
SuperscriptSpan superscriptSpan = new SuperscriptSpan();
SpannableStringBuilder builder = new SpannableStringBuilder(text);
builder.setSpan(
                superscriptSpan,
                text.indexOf("2"),
                text.indexOf("2") + String.valueOf("2").length(),
                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

yourTextView.setText(builder);

我找到了一个非常好的example

答案 1 :(得分:0)

只做一些简短的研究,在Android N +中弃用Html.fromHtml

正确的方法应该是:

strButton = Html.fromHtml(html,Html.FROM_HTML_MODE_LEGACY);

对于Android版本,只需查看@Vishva Dave的评论:

String strButton;
String html = "x<sup>2</sup>";
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
    strButton = Html.fromHtml(html,Html.FROM_HTML_MODE_LEGACY);
}
else{
    strButton = Html.fromHtml(html);
}

squareButton.setText(strButton);

答案 2 :(得分:-1)

请从xml中删除style="?android:attr/borderlessButtonStyle"及其正常工作。

只需删除:{{1}}