如何使 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。
我在网上看到的大多数答案都在谈论如何向文本添加 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。