繁体   English   中英

如何在Android / Java Textview中将点击侦听器添加到字符串中?

[英]How to add click listeners into a string in Android/Java Textview?

我要完成的工作是大多数twitter应用程序中的标准操作,在textview中,文本字符串中的单词之前可能会出现“ @”提及或“#”#标签,并且它们实际上能够在其上添加点击侦听器这个词引发了另一项活动,有人知道这是如何实现的吗? 下面我附上一张示例照片,显示了我要实现的目标,任何帮助都将非常有帮助

在此处输入图片说明

看一下Linkify类。 它允许您为给定的正则表达式在TextViews中添加链接。

从本文中摘录了以下内容:

TextView mText = (TextView) findViewById(R.id.mytext);
Pattern userMatcher = Pattern.compile("\B@[^:\s]+");
String userViewURL = "user://";
Linkify.addLinks(mText, userMatcher, userViewURL);

模式用于从给定的调节器表达式(如上面的示例)创建新模式,该模式捕获给定文本中的任何文本(如@username),然后您必须定义user://方案,这也必须在活动中进行定义以捕获点击最后一个Linkify.addLinks使它们一起工作。 让我们看一下用于意图过滤器的Android.manifest文件。

<activity android:name=”.DirectMessageActivity” > 
    <intent-filter>
        <category android:name=”android.intent.category.DEFAULT”/> 
        <action android:name=”android.intent.action.VIEW” /> 
        <data android:scheme=”user” /> 
    </intent-filter> 
</activity>

当您单击@username时,此活动将捕获单击并处理单击的字符串。 是的,我们没有提及用户单击@username时发送到DirectMessageActivity的内容,因为您可能会猜测“用户名”字符串将传递给DirectMessageActivity。 您可以像这样获得该字符串。

Uri data = getIntent.getData();
if(data != null){
    String uri = data.toString();
    username = uri.substring(uri.indexOf("@")+1);
}

这样尝试吧.......

TextView tv[] = new TextView[subCategory.length];
    for (int i = 0; i < subCategory.length; i++) {
            tv[i] = new TextView(this);
            tv[i].setText(subCategory[i]);
            tv[i].setId(i);
            sCategoryLayout.addView(tv[i]);
            tv[i].setOnClickListener(onclicklistener);
        }

onclicklistener方法:

OnClickListener onclicklistener = new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        if(v == tv[0]){
            //do whatever you want....
        }
    }
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM