TextView超链接

这里面涉及两个知识点——超链接和跳转。以下进行逐一解说:

1.实现超链接:

1.1形成超链接文本

    public static SpannableString getUserlink(String userName,
            String userId) {
        SpannableString ss = new SpannableString(userName);
        URLSpan urlSpan = new URLSpan("gch://" + userId);
        ss.setSpan(urlSpan, 0, ss.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        return ss;
    }

1.2将其加入到TextView上面:

        mTVText.setText(getUserlink("guchuanhang", "2010111180"));

1.3给该TextView设置权限

        mTVText.setMovementMethod(LinkMovementMethod.getInstance());

注意:这里默认生成的超链接是有下划线&&字体颜色是蓝色的,假设要删除下划线||改动超链接的颜色。能够使用UrlSpanNoUnderline .java代替URLSpan,其代码例如以下:

package com.scott.crash;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.content.res.ResourcesCompat;
import android.support.v7.app.AppCompatActivity;
import android.text.TextPaint;
import android.text.style.URLSpan;
import android.widget.TextView;

public class UrlSpanNoUnderline extends URLSpan {
    int greenColor=0;
    public UrlSpanNoUnderline(String p_Url) {
        super(p_Url);
        greenColor= Color.parseColor("#00ff00");
    }
    public void updateDrawState(TextPaint p_DrawState) {
        super.updateDrawState(p_DrawState);
        p_DrawState.setUnderlineText(false);
        p_DrawState.setColor(greenColor);
    }
}

參考地址:

https://prativas.wordpress.com/2013/05/20/hyperlinktextcolor/

以下是加入超链接页面的完整代码:

package com.example.androidtest;

import android.app.Activity;
import android.os.Bundle;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.method.LinkMovementMethod;
import android.text.style.URLSpan;
import android.widget.TextView;

public class FirstActivity extends Activity {
    TextView mTVText;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mTVText = new TextView(this);
        setContentView(mTVText);
        mTVText.setMovementMethod(LinkMovementMethod.getInstance());
        mTVText.setText(getUserlink("guchuanhang", "2010111180"));
        // mTVText.setText(getZanSequence());

    }

    public static SpannableString getUserlink(String userName,
            String userId) {
        SpannableString ss = new SpannableString(userName);
        URLSpan urlSpan = new URLSpan("gch://" + userId);
        ss.setSpan(urlSpan, 0, ss.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        return ss;
    }

}

2.实现跳转:

2.1给目标页面加入对应标志(在manifest中声明。相似于“声称,我是维修电脑的。有电脑问题的请找我”)。

在目标Activity中加入怎样intent

    <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="gch" >
                </data>
            </intent-filter>

在Android中的intent-filter中。声明,处理“gch://?

?

?”的url。

2.2在目标Activity中解析url。获取想要的数据:


import android.app.Activity;
import android.os.Bundle;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.URLSpan;
import android.widget.Button;
import android.widget.TextView;

public class SecondActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        TextView show = new TextView(this);
        setContentView(show);
        /**
         * 因为gch://有6个字符组成,所以。截取6位之后的字符串就可以
         */
        String urlString = getIntent().getDataString().substring(6);
        show.setText(urlString);
    }

}
时间: 2025-01-02 16:34:56

TextView超链接的相关文章

textview点击指定字符串跳转 textview超链接效果

网上搜了很多的博客看写的都不够详尽,每个方法的用法含义写的都不全,甚至方法乱其八糟,所以我也厚着脸皮写下来这个效果吧. 由于这个页面采用MVP,所以这里会有一个IView的积累 ,这个方法自然就要@Override @Override public void setBluetext(String zw_longtext, String zw_bluetext) { // "成为联通用户,可将默认网速免费升至200K/S,且有效期更长!点击联通用户登记页进行申请"; remindlong

自定义图文混排视图MyImageTextView

TextView本身是支持图文混排的,在手机上,通过TextView进行图文混排时,排版可能难以达到PC上浏览器的效果,特别是对于一些支持多种标签的发布系统. 1. 网上很容易找到的使用TextView实现图文混排的例子,大多是类似于下面的形式: TextView tv_Content; tv_Content.setText(Html.fromHtml(item.getContent(), GetImageGetter(), null)); private ImageGetter imageGe

ListView中各组件点击事件冲突,ListView不响应OnItemClickListener事件

参考博文:https://xjaphx.wordpress.com/2011/07/14/listview-doesnt-respond-to-onitemclicklistener/ #1,listview item中包含checkbox,需要改变checkbox的属性设置: android:focusable="false" android:focusableInTouchMode="false" #2,包含ImageButton,在代码中设置:在布局文件中设置

Android TextView中实现点击文本超链接(无下划线)的封装类

android中有的时候须要在TextView上设置一些超链接,点击这些超链接时进行一些操作.比如新浪微博上的一些keyword,点击时会跳转到对应的页面. 怎样实现我们就直接看源代码吧. /** * * created by Mr.Simple, Aug 21, 20141:51:40 PM. * Copyright (c) 2014, hehonghui@umeng.com All Rights Reserved. * * ##################################

textView 显示和html的元素控件与进行超链接

1.这些类似html标签可以用Html.fromHtml方法将html标签字符串转化成CharSequence对象,然后再TextView中进行设置: 如: 在.xml文件中 <TextView android:id="@+id/textview1" android:padding="20sp" android:layout_width="wrap_content" android:layout_height="wrap_cont

TextView字体,行距,html格式,超链接,最大长度的设定

颜色,大小 <!-- 设置字体的大小,推荐用sp做单位:字体颜色以#开头 --> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" android:textColor=&

TextView 中添加超链接

在textView添加超链接,有两种方式,第一种通过HTML格式化你的网址,一种是设置autolink,让系统自动识别超链接,下面为大家介绍下这两种方法的实现 代码如下: 第一种  public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout la

Android TextView中文字设置超链接、颜色、字体

TextView是用来显示文本的,有时需要给TextView中的个别字设置为超链接,或者设置个别字的颜色.字体等,那就需要用到Spannable对象,可以借助Spannable对象实现以上设置. 效果图: Activity代码: import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.text.Spannable; import android.tex

(四十八)Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性

1.程序结构图 2.MainActivity.java中的代码 package com.example.setlinkdemo; import java.io.IOException; import org.xmlpull.v1.XmlPullParserException; import android.app.Activity; import android.content.Intent; import android.content.res.ColorStateList; import a