如何在Android TextView中显示分数?

7

我想在Android文本视图上显示。我尝试使用Unicode实现,但没有成功。请查看我的代码。有人能帮忙吗?

additionalInfoString = additionalInfoString.replace("½",<sup><small>&frac12;</small></sup>);

请看这个链接,希望能对你有所帮助:http://stackoverflow.com/questions/2920726/android-displaying-fractions-using-unicode - Farhan Shah
5个回答

7

您需要使用HTML格式来显示分数

tv.setText(Html.fromHtml("3<sup>1</sup>/<sub>2</sub>"));

在这里检查你的HTML文本。

输入图片描述

由于Html.fromHtml(String s)方法已被弃用,请查看此答案SO Answer


谢谢你,Slientkiller...它起作用了...但我的问题是它在TextView上被截断了。你能为我提供一些建议吗? - androidDeveloer
@android开发者,你需要为此设置固定高度。 - SilentKiller
优雅的解决方案!你也可以使用 &frasl; 代替普通的 / 来表示分数线:tv.setText(Html.fromHtml("3<sup>1</sup>&frasl;<sub>2</sub>")); - msal
@msal,你应该有编辑权限。我总是欣赏他人更好的回答 :) 请自行编辑。 - SilentKiller

1
你可以直接使用 Unicode 字符,如下所示:
tv.setText("3\u00BD");

这对我有用。

1
你可以使用Android TextView的HTML格式。但是你必须在顶部和底部添加额外的空间,以防止分数被切断。
  SpannableStringBuilder text = new SpannableStringBuilder();
  text.append("3");
  text.append("\n");
  text.append(Html.fromHtml("<sup>1</sup>/<sub>2</sub>"));
  text.append("\n");

附注:上述代码未经测试(只是一种猜测)


0

试试这个:

mTxtVw.setText(Html.fromHtml("3<sup>1</sup>/<sub>2</sub>"));

0
我建议您在RelativeLayout中创建两个TextView并进行管理,因为在Html.fromHtml中,上标文本没有正确的对齐方式。可以使用以下类似的内容:
 <RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/maintext_sup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:gravity="top"
        android:text="1/2"
        android:textSize="10sp"/>

    <TextView
        android:id="@+id/maintext"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:gravity="center"
        android:text="3"
        android:textSize="20sp" />
   </RelativeLayout>   

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接