如何使 TextView 中的文字可点击/启动代码?

How to make words in your TextView clickable / launch code?

我在网上看到的大多数答案都在谈论如何向文本添加 a href 标签,这样当您单击文本中的一个词时,您就会启动一个网站。

我正在努力让你点击一个词,它通过 Intent 进入你应用程序的一部分,向下滚动到正确的位置(在这种情况下,我的 Settings/preferences 页面的特定部分, 在特定的偏好标记处)。

旧答案谈论使用 getListView() 自动滚动,但这是针对使用 PreferenceActivities 的旧框架(而现在我使用 Activity 并调用 PreferenceFragment)。

要使特定单词可点击,请使用 SpannableString class 然后在您的文本中使用它。在 onClick() 中检查此 LINK 您可以尝试打开 activity,同时 将一些信息 传递给可以理解要做什么的 activity做,比如创建一个列表然后滚动到特定项目

您可能想要使用 ClickableSpan。要使您的文本段落可点击,您可以使用类似的东西,但是有多种方法可以将可点击范围应用于您的文本。

    String text = textView.getText();
    Spannable spannable = new SpannableString(text);
    String passage = "xy"; // the substring you want to make clickable in the text
    int index = text.indexOf(passage); //can return -1 if passage is not in the text (ignored this for the purpose of this example)
    spannable.setSpan(new ClickableSpan() {
        @Override
        public void onClick(View widget) {
            //your code here
        }
    }, index, index + passage.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
    textView.setText(spannable);

您应该以某种方式向 reader 表明该段落是可点击的。例如使用 UnderlineSpan