Android:从可点击文本启动 Activity

标签 android text hyperlink launch

有什么方法可以从字符串的一部分启动 Activity 。

例如 我的 strings.xml 文件中有这个:

<string name="clickable_string">This is a <u>clickable string</u></string>

我希望 u 标记之间的文本带有下划线,并在插入到 TextView

时单击时启动 Activity

最佳答案

试试这个,

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/

相关文章:

qt - 如何使用 Qt 在文本文件中搜索字符串

python - 如何以正确的顺序将句子中的单词插入到列表中

javascript - AngularJS 按空格键调用 href (ui-router)

html - 添加到 Google Chrome 的收藏夹链接

html - 无法使用 NAV LINKS

android - (Phonegap/JS) window.close() 不使用本地构建执行

r - 如何从sparklyr中的字符串中删除 '\'

java - 如何使用 Retrofit 获取 GET 请求到 ListView

java - 使用连接多个 View 的单个手势检测器获得双击/触摸 View

java - 哪些颜色值可以用于 GradientDrawable