如何将多个字符串资源分配给单个文本视图?
How to assign multiple string resources to a single textview?
我在字符串资源中创建了 3 个字符串。每个字符串中都有一个外部 link 。基本上我想把一个句子放在 TextView
里面,里面有 3 个 link 之外的句子。请在 Android.
中说明如何执行此操作
如果我们可以通过XML分配多个字符串,那将是最好的。
你必须使用Spannable,下面是示例,看看
ClickableSpan linkClick = new ClickableSpan() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(), "Link Click",
Toast.LENGTH_SHORT).show();
view.invalidate();
}
@Override
public void updateDrawState(TextPaint ds) {
if (textView.isPressed()) {
ds.setColor(Color.BLUE);
} else {
ds.setColor(Color.RED);
}
textView.invalidate();
}
};
textView.setHighlightColor(Color.TRANSPARENT);
Spannable spannableString = new SpannableString("Link in TextView");
spannableString.setSpan(linkClick, 0, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(spannableString, TextView.BufferType.SPANNABLE);
textView.setMovementMethod(LinkMovementMethod.getInstance());
在此,String Link in TextView
只有 "LINK" 是可点击的
如果您想合并 3 个链接并使它们可点击,您可以试试这个:
<string name="combined_links"><![CDATA[<a href="%1$s"> my link one</a> <a href="%2$s"> my link two</a> <a href="31$s"> my link three</a>]]></string>
String sentence = getString(R.string.combined_links, getString(R.string.link_one), getString(R.string.link_two), getString(R.string.link_three))
我在字符串资源中创建了 3 个字符串。每个字符串中都有一个外部 link 。基本上我想把一个句子放在 TextView
里面,里面有 3 个 link 之外的句子。请在 Android.
如果我们可以通过XML分配多个字符串,那将是最好的。
你必须使用Spannable,下面是示例,看看
ClickableSpan linkClick = new ClickableSpan() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(), "Link Click",
Toast.LENGTH_SHORT).show();
view.invalidate();
}
@Override
public void updateDrawState(TextPaint ds) {
if (textView.isPressed()) {
ds.setColor(Color.BLUE);
} else {
ds.setColor(Color.RED);
}
textView.invalidate();
}
};
textView.setHighlightColor(Color.TRANSPARENT);
Spannable spannableString = new SpannableString("Link in TextView");
spannableString.setSpan(linkClick, 0, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(spannableString, TextView.BufferType.SPANNABLE);
textView.setMovementMethod(LinkMovementMethod.getInstance());
在此,String Link in TextView
只有 "LINK" 是可点击的
如果您想合并 3 个链接并使它们可点击,您可以试试这个:
<string name="combined_links"><![CDATA[<a href="%1$s"> my link one</a> <a href="%2$s"> my link two</a> <a href="31$s"> my link three</a>]]></string>
String sentence = getString(R.string.combined_links, getString(R.string.link_one), getString(R.string.link_two), getString(R.string.link_three))