我正在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>"));
P.S。我设置了minSdkVersion 14
和targetSdkVersion 26
!
答案 0 :(得分:3)
Android原生支持sub / superscript类型文本,称为SubscriptSpan和SuperscriptSpan
上标的样本用法(例如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}}