首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Android textSwitcher中使用上标

在Android textSwitcher中使用上标
EN

Stack Overflow用户
提问于 2010-10-31 01:14:24
回答 2查看 3.1K关注 0票数 1

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

下面是我尝试过的:

代码语言:javascript
复制
        Spanned span = Html.fromHtml("<sup>TM</sup>");
        String subscript = span.toString();
        mSwitcher.setText(getText(R.string.desc_about1) + subscript);

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

代码语言:javascript
复制
<string name="desc_about1">Android<sup><small>TM</small></sup></string>

这两种方法都不起作用。还有别的办法吗?

我的textSwitcher代码供参考:

代码语言:javascript
复制
    <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;
}

谢谢大家!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-31 14:13:43

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

代码语言:javascript
复制
    Spanned span = Html.fromHtml(getText(R.string.desc_about1) + "<sup>TM</sup>");
    mSwitcher.setText(span);

适用于我的完整示例:

代码语言:javascript
复制
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存储你的文本:

代码语言:javascript
复制
 mSwitcher.setText(Html.fromHtml(getText(R.string.desc_about1) + "<sup>TM</sup>"));

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

票数 2
EN

Stack Overflow用户

发布于 2013-01-23 17:22:16

我知道上一个条目在两年前是一个公认的答案,但我添加了一个略有不同的解决方案

代码语言:javascript
复制
Spanned span = Html.fromHtml(getText(R.string.desc_about1) + "&trade;");
mSwitcher.setText(span);

将& trade;转换为字符集的单个字符,而不是像在™中那样转换为较小的超级脚本TM

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4059763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档