相关疑难解决方法(0)

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

我有一个TextView,它呈现基本HTML,包含2个以上的链接.我需要捕获链接上的点击并打开链接 - 在我自己的内部WebView中(不在默认浏览器中).

处理链接呈现的最常用方法似乎是这样的:

String str_links = "<a href='http://google.com'>Google</a><br /><a href='http://facebook.com'>Facebook</a>";
text_view.setLinksClickable(true);
text_view.setMovementMethod(LinkMovementMethod.getInstance());
text_view.setText( Html.fromHtml( str_links ) );
Run Code Online (Sandbox Code Playgroud)

但是,这会导致链接在默认的内部Web浏览器中打开(显示"使用完整操作..."对话框).

我尝试实现一个onClickListener,当单击链接时正确触发,但我不知道如何确定单击了哪个链接...

text_view.setOnClickListener(new OnClickListener(){

    public void onClick(View v) {
        // what now...?
    }

});
Run Code Online (Sandbox Code Playgroud)

或者,我尝试创建自定义LinkMovementMethod类并实现onTouchEvent ...

public boolean onTouchEvent(TextView widget, Spannable text, MotionEvent event) {
    String url = text.toString();
    // this doesn't work because the text is not necessarily a URL, or even a single link... 
    // eg, I don't know how to extract the clicked link from the greater paragraph of …
Run Code Online (Sandbox Code Playgroud)

android hyperlink textview

108
推荐指数
8
解决办法
8万
查看次数

在android中的textview中单击时获取链接文本的值

我有一个TextView.我通过匹配一些正则表达式模式添加了像"@abc","#android"这样的自定义链接.链接显示正常.但是,我没有办法提取被点击的链接的文本.我正在使用SpannableString将setText设置为textview.然后我使用我的自定义ClickableSpan设置跨度.它工作正常.另外我还可以捕捉onclick事件.但是onClick()方法有一个View参数.如果我在View上调用getText()(在将其类型转换为TextView之后),则返回整个文本.我搜索了很多,但总是找到添加链接和捕获事件的方法,但没有人告诉我获取链接的文本.

这是我用来添加链接和接收onclick的代码.我从其中一个SO线程中获取了代码..

Pattern pattern = Pattern.compile("@[\\w]+");
Matcher matcher = pattern.matcher(tv.getText());//tv is my TextView
while (matcher.find()) {
    int x = matcher.start();
    int y = matcher.end();
    final android.text.SpannableString f = new android.text.SpannableString(
    tv.getText());
    f.setSpan(new InternalURLSpan(new View.OnClickListener() {
        public void onClick(View v) {
        showDialog(1);
    }
}), x, y, android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(f);
tv.setLinkTextColor(Color.rgb(19, 111, 154));
tv.setLinksClickable(true);
Run Code Online (Sandbox Code Playgroud)

这是InternalURLSpan:

class InternalURLSpan extends android.text.style.ClickableSpan {
    View.OnClickListener mListener;

    public InternalURLSpan(View.OnClickListener listener) {
        mListener = listener; …
Run Code Online (Sandbox Code Playgroud)

android text hyperlink textview

12
推荐指数
1
解决办法
5035
查看次数

标签 统计

android ×2

hyperlink ×2

textview ×2

text ×1