在android中的文本视图中创建可点击链接

我在TextView中有一些哈希标签,以’#’开头

示例:“#one#two Hello World #three”.

我希望这些哈希标签可单独点击并打开一个活动并在该活动中获取此文本.

因此,这些哈希作为链接工作并打开一个活动.标签也不固定意味着可以是任何文本.同时将哈希标记的颜色更改为红色,其余标记的颜色将为黑色

示例:#one#two Hello World #three

解决方法

根据您的要求修改以下内容.使用SpannableString

String s ="#one #Two Hello World #three";
String split[] = s.split("#");
TextView_tv = (TextView) findViewById( R.id.tv );
for(int i=1;i<split.length;i++)
{
  SpannableString ss1=  new SpannableString("#"+split[i]);     
  ss1.setSpan(new  MyClickableSpan(""+i),1,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  ss1.setSpan(newForegroundColorSpan(Color.RED),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  _tv.append(ss1);
   _tv.append(" ");   
}
_tv.setMovementMethod(LinkMovementMethod.getInstance());

class MyClickableSpan extends ClickableSpan{    
String clicked;
public MyClickableSpan(String string) {

    super();
    clicked =string;
    }

    public void onClick(View tv) {
        if(clicked.equals("1"))
        {
             Toast.makeText(getApplicationContext(),"One",1000).show();
        }
        else if(clicked.equals("2"))
        {
            Toast.makeText(getApplicationContext(),"Two",1000).show();
        }
        else
        {
            Toast.makeText(getApplicationContext(),"Three",1000).show();       
        }

   }

    @Override
    public void updateDrawState(TextPaint ds) {
       ds.setUnderlineText(false); // set to false to remove underline
    }
    } 
   }

抓住模拟器

在每个哈希点击显示吐司一,二和三.而不是吐司开始一个新的活动.

编辑:

如果你想点击字符串

ss1.setSpan(new  MyClickableSpan(""+i,split[i]),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

然后

String clicked;
 String astring;
 public MyClickableSpan(String check,String actualstring) {
super();
clicked =check;
astring =actualstring; // pass this to next activity using intent
}

然后

public void onClick(View tv) {
        if(clicked.equals("1"))
        {
             Toast.makeText(getApplicationContext(),astring,1000).show();       
        }

   }

相关文章

Android 如何解决dialog弹出时无法捕捉Activity的back事件 在...
Android实现自定义带文字和图片的Button 在Android开发中经常...
Android 关于长按back键退出应用程序的实现最近在做一个Andr...
android自带的时间选择器只能精确到分,但是对于某些应用要求...