首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在getResources()中使用SpannableString?

如何在getResources()中使用SpannableString?
EN

Stack Overflow用户
提问于 2015-08-08 10:31:50
回答 1查看 201关注 0票数 1

我正在创建一个小型的Android应用程序。我想在文本视图中显示一个可点击的文本。这是我的代码:

代码语言:javascript
复制
public class MainActivity extends AppCompatActivity {

   // SpannableString ss = new SpannableString(getResources().getString(R.string.hello_world));
   SpannableString ss = new SpannableString("Hello world!");

    final ClickableSpan clickableSpan111 = new ClickableSpan() {
        @Override
        public void onClick(View widget) {
            Toast toast = Toast.makeText(getApplicationContext(),
                    ";)",
                    Toast.LENGTH_SHORT);
            toast.setGravity(Gravity.CENTER, 0, 0);
            toast.show();
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ss.setSpan(clickableSpan111, 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

        TextView textView = (TextView) findViewById(R.id.textView);
        textView.setText(TextUtils.concat("my text ", ss));
        textView.setMovementMethod(new LinkMovementMethod());
    }

}

它正常工作,但如果我将代码从

代码语言:javascript
复制
SpannableString ss = new SpannableString("Hello world!");

代码语言:javascript
复制
SpannableString ss = new SpannableString(getResources().getString(R.string.hello_world));

申请不起作用。如何在getResources()中使用SpannableString?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-08 11:03:26

在xml资源文件中,您可以为非中断空间添加unicode,它应该像下面的\u00A0一样工作,尝试将它添加到ur字符串文件中。

根据

然后您可以添加以下内容

代码语言:javascript
复制
youspannable.setSpan(clickableSpan, the starting index for nonbreaking space, the last index, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
then
textView.setText(youspannable);
textView.setMovementMethod(LinkMovementMethod.getInstance());

这应该在create中,因为在活动生命周期中调用getResources()太早了。

所以你的代码应该是这样的

代码语言:javascript
复制
    public class MainActivity extends Activity { 

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
SpannableString ss = new SpannableString(getResources().getString(R.string.hello_world));

    final ClickableSpan clickableSpan111 = new ClickableSpan() {
        @Override
        public void onClick(View widget) {
            Toast toast = Toast.makeText(getApplicationContext(),
                    ";)",
                    Toast.LENGTH_SHORT);
            toast.setGravity(Gravity.CENTER, 0, 0);
            toast.show();
        }
    };
        ss.setSpan(clickableSpan111, 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

        TextView textView = (TextView) findViewById(R.id.textView);
        textView.setText(TextUtils.concat("my text ", ss));
        textView.setMovementMethod(LinkMovementMethod.getInstance());
    }

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

https://stackoverflow.com/questions/31892141

复制
相关文章

相似问题

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