TextView Android内部的可点击单词[重复]

Posted

技术标签:

【中文标题】TextView Android内部的可点击单词[重复]【英文标题】:Clickable words inside of TextView Android [duplicate] 【发布时间】:2014-10-11 08:48:09 【问题描述】:

我有一个包含主题标签的文本视图。 #first #second #third。我的问题是如何检测点击了哪个主题标签,以便我可以执行一些操作 - 例如。祝酒词。 这可以使用 TextView 小部件吗?我应该改用其他小部件吗?

更新

我使用this example 找到了我的解决方案。希望以后能对其他人有所帮助!

【问题讨论】:

【参考方案1】:

您可以使用 spannable string 来实现:

SpannableString ss = new SpannableString("Your string");
String[] words = ss.split(" ");
for(final String word : words)
   if(word.startsWith("#"))
     ClickableSpan clickableSpan = new ClickableSpan() 
    @Override
    public void onClick(View textView) 
        //use word here to make a decision 
    
    ;
    ss.setSpan(clickableSpan, ss.indexOf(word), ss.indexOf(word) + word.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  



TextView textView = (TextView) findViewById(R.id.hello);
textView.setText(ss);
textView.setMovementMethod(LinkMovementMethod.getInstance());

【讨论】:

感谢@vipul 并且要获得点击的单词,您可以在 onClick 中使用它: Spanned sp = (Spanned) ((TextView)textView).getText(); int start = sp.getSpanStart(this); int end = sp.getSpanEnd(this); String word = sp.subSequence(start, end).toString(); SpannableString 没有 splitindexOf 方法

以上是关于TextView Android内部的可点击单词[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Android Widget 中的可滚动 TextView

带有可点击链接的 Android TextView:如何捕获点击?

Android - 在 TextView 中突出显示一个单词?

android textview 中取词,如何除标点符号 ClickableSpan

Android - 突出显示TextView中的单词?

如何在TextView Android Studio中计算单词[重复]