我正在创建一个小型的Android应用程序。我想在文本视图中显示一个可点击的文本。这是我的代码:
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());
}
}它正常工作,但如果我将代码从
SpannableString ss = new SpannableString("Hello world!");至
SpannableString ss = new SpannableString(getResources().getString(R.string.hello_world));申请不起作用。如何在getResources()中使用SpannableString?
发布于 2015-08-08 11:03:26
在xml资源文件中,您可以为非中断空间添加unicode,它应该像下面的\u00A0一样工作,尝试将它添加到ur字符串文件中。
根据这
然后您可以添加以下内容
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()太早了。
所以你的代码应该是这样的
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());
}
}https://stackoverflow.com/questions/31892141
复制相似问题