有什么方法可以从字符串的一部分启动 Activity 。
例如 我的 strings.xml 文件中有这个:
<string name="clickable_string">This is a <u>clickable string</u></string>
我希望 u
标记之间的文本带有下划线,并在插入到 TextView
最佳答案
试试这个,
final Context context = ... // whereever your context is
CharSequence sequence = Html.fromSource(context.getString(R.string.clickable_string));
SpannableStringBuilder strBuilder = new SpannableStringBuilder(sequence);
UnderlineSpan[] underlines = strBuilder.getSpans(UnderlineSpan.class);
for(UnderlineSpan span : underlines) {
int start = strBuilder.getSpanStart(span);
int end = strBuilder.getSpanEnd(span);
int flags = strBuilder.getSpanFlags(span);
ClickableSpan myActivityLauncher = new ClickableSpan() {
public void onClick(View view) {
context.startActivity(getIntentForActivityToStart());
}
};
strBuilder.setSpan(myActivityLauncher, start, end, flags);
}
TextView textView = ...
textView.setText(strBuilder);
textView.setMovementMethod(LinkMovementMethod.getInstance());
基本上,您必须将 Span 对象附加到您希望可点击的字符范围内。由于您无论如何都在使用 HTML,因此您可以使用 Html.fromSource() 放置的下划线跨度作为您自己的跨度的标记。
或者,您也可以在字符串中定义一个只有您知道的标签。
即<activity>
并将您自己的标记处理程序提供给 Html.fromSource() 方法。这样,您的 TagHandler 实例可以执行类似的操作,用特定颜色、下划线、粗体围绕标记文本并使其可点击。但是,如果您发现自己经常编写此类代码,我只会推荐 TagHandler 方法。
关于Android:从可点击文本启动 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4025770/