【问题标题】:Using superscript in an Android textSwitcher在 Android textSwitcher 中使用上标
【发布时间】:2010-10-30 17:14:23
【问题描述】:

我无法让我的 textSwitcher 能够支持上标文本。无论我尝试什么,它都会显示为常规大小的文本。

这是我尝试过的:

        Spanned span = Html.fromHtml("<sup>TM</sup>");
        String subscript = span.toString();
        mSwitcher.setText(getText(R.string.desc_about1) + subscript);

然后我尝试在 XML 字符串文件中设置它:

<string name="desc_about1">Android<sup><small>TM</small></sup></string>

这些都不行。还有其他方法吗?

我的 textSwitcher 代码供参考:

    <TextSwitcher android:id="@+id/switcher"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />


@Override
public View makeView() {
    TextView t = new TextView(this);
    t.setGravity(Gravity.TOP | Gravity.LEFT);
    t.setTextSize(18);
    return t;
}

谢谢大家!

【问题讨论】:

    标签: java android xml eclipse superscript


    【解决方案1】:

    你的第一个例子对我来说看起来不正确,试试这个:

        Spanned span = Html.fromHtml(getText(R.string.desc_about1) + "<sup>TM</sup>");
        mSwitcher.setText(span);
    

    对我有用的完整示例:

    package com.stackoverflow;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.text.Html;
    import android.view.Gravity;
    import android.view.View;
    import android.widget.TextSwitcher;
    import android.widget.TextView;
    import android.widget.ViewSwitcher.ViewFactory;
    
    public class Test extends Activity implements ViewFactory {
    
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            TextSwitcher ts = (TextSwitcher) findViewById(R.id.switcher);
            ts.setFactory(this);
            ts.setText(Html.fromHtml("Test<sup>TM</sup>"));
        }
    
        @Override
        public View makeView() {
            TextView t = new TextView(this);
            t.setGravity(Gravity.TOP | Gravity.LEFT);
            t.setTextSize(18);
            return t;
        }
    

    }

    如果你想使用 strings.xml 来存储你的文本:

     mSwitcher.setText(Html.fromHtml(getText(R.string.desc_about1) + "<sup>TM</sup>"));
    

    只需确保您传递给 setText 的最新内容是 fromHtml 输出。

    【讨论】:

    • 奇怪..我刚刚尝试过,它对我有用。您确定要将 Html.fromHtml() 输出直接传递给 setText 方法吗?在您的情况下,您已将其转换为字符串,这就是问题所在。
    • 是的,我刚刚测试过。我必须做 TM 并且它起作用了。不幸的是,如果我这样做,那么我不能使用 string.xml 文件,因为我不能在 Spanned 上使用“+”运算符。叹息……权衡。谢谢!
    • 您可以不受限制地使用strings.xml。查看更新的示例。
    【解决方案2】:

    我知道上一个条目是 2 年前被接受的答案,但我添加了一个稍微不同的解决方案

    Spanned span = Html.fromHtml(getText(R.string.desc_about1) + "&trade;");
    mSwitcher.setText(span);
    

    ™从字符集中转换为单个字符,而不是像 ™ 中那样的更小和上标的 TM

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-10
      • 2011-03-09
      • 1970-01-01
      • 2020-08-31
      相关资源
      最近更新 更多