在一个Activity里面的TextView上面添加网页链接,启动后到另一个Activity里面!

可以添加很多的属性,样式或者是什么的,目前要完成的功能是 点击TextView里面的某个文字链接,进入另外一个Activity里面!
例如你可以做微博里面的 @XXX; 点击后进入他的个人主页!

下面都是Activity:

package wq.gdky005;

import java.util.ArrayList;

import android.R.color;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.text.Html;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.text.style.URLSpan;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

public class AbcActivity extends Activity {
    private TextView tv;
    private static Context ctx;

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

        tv = new TextView(this);
        tv.setClickable(false);
        ctx = this;

        String htmlLinkText = "";

        htmlLinkText = "aaaaaaaaaa"
                + "<a style=\"color:red;\" href=\"我是超链接……\">@超链接点击事件;</a>" +
                "     <a style=\"color:red;\" href=\"我是超链接2……\">@超链接点击事件;</a>"
                + "aaaaaaaaaaaaaaaa";
        // 文字的样式(style)被覆盖,不能改变……

        tv.setText(Html.fromHtml(htmlLinkText));
        tv.setMovementMethod(LinkMovementMethod.getInstance());
        CharSequence text = tv.getText();
        if (text instanceof Spannable) {
            int end = text.length();
            Spannable sp = (Spannable) tv.getText();
            URLSpan[] urls = sp.getSpans(0, end, URLSpan.class);
            SpannableStringBuilder style = new SpannableStringBuilder(text);
            style.clearSpans();// should clear old spans
            for (URLSpan url : urls) {
                MyURLSpan myURLSpan = new MyURLSpan(url.getURL());
                style.setSpan(myURLSpan, sp.getSpanStart(url),
                        sp.getSpanEnd(url), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
            }
            tv.setText(style);
        }
        setContentView(tv);

    }

    private static class MyURLSpan extends ClickableSpan {

        private String mUrl;

        MyURLSpan(String url) {
            mUrl = url;
        }

        @Override
        public void onClick(View widget) {
            Toast.makeText(ctx, mUrl, Toast.LENGTH_LONG).show();
            widget.setBackgroundColor(Color.parseColor("#00000000"));

            Intent intent = new Intent(AbcActivity.ctx, AAAActivity.class);
            ctx.startActivity(intent);

        }
    }
}

这是设置文件的颜色和样式的

TextView是用来显示文本的,有时需要给TextView中的个别字设置为超链接,或者设置个别字的颜色、字体等,那就需要用到Spannable对象,可以借助Spannable对象实现以上设置

myTextView = (TextView) this.findViewById(R.id.myTextView);   

  //创建一个 SpannableString对象
  SpannableString sp = new SpannableString("这句话中有百度超链接,有高亮显示,这样,或者这样,还有斜体.");
  //设置超链接
  sp.setSpan(new URLSpan("http://www.baidu.com"), 5, 7,
  Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  //设置高亮样式一
  sp.setSpan(new BackgroundColorSpan(Color.RED), 17 ,19,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  //设置高亮样式二
  sp.setSpan(new ForegroundColorSpan(Color.YELLOW),20,24,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
  //设置斜体
  sp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 27, 29, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
  //SpannableString对象设置给TextView
  myTextView.setText(sp);
  //设置TextView可点击
  myTextView.setMovementMethod(LinkMovementMethod.getInstance());   
时间: 2024-08-17 11:19:05

在一个Activity里面的TextView上面添加网页链接,启动后到另一个Activity里面!的相关文章

后台找到repeater里面的div并添加客户端点击事件

public partial class Inv_SelectWorkservice : System.Web.UI.Page,IPostBackEventHandler{ } 通过OnItemCreated 找到repeater里面的div并添加客户端点击事件div要加上runat="server" id="itemTy" onclick="test" 后台: protected void Repeater2_ItemCreated(objec

Android手机app启动的时候第一个Activity必须是MainActivity吗

原文:Android手机app启动的时候第一个Activity必须是MainActivity吗 Android手机APP启动的第一个Activity是可以自己设置的,不是必须的MainActivity,可以是任何的Activity. 设置Android手机APP启动的第一个Activity得看Android项目里的mainfest.xml文件: android.name属性值是由包名(com.example.login)+启动的Activity类名(Login)组成的,如果要修改APP启动的第一

自定义ListView的点击Item项后进入另一个activity背景色改变在pressed或selected等状态时的颜色

在点击进入另一个activity时颜色改变是想在游戏攻略中实现的,但查资料找不到结果,今天突发灵感终于实现了. 我们大多数情况下都是自己写adapter,在写的那个Class中定义一个 boolean 型的 IsJump.然后在 OnItemClickListener 中 把 IsJump 设置为ture,再adapter2.notifyDataSetChanged();  在Adapter中 ture 的情况设置一种颜色就解决问题标记是否读过了.' 自定义ListView的Item项在pres

html里面的submit按钮功能和链接的天然属性问题

1.submit按钮控件 默认情况会将数据提交到服务器,可以通过修改按钮的onsubmit事件来修改是否提交,如下,若checkForm()返回true则提交 <form id="formid" onsubmit="return checkForm()"> 2.链接(<a href="">),通常情况下href会指向一个文件向量,如果将href你面内容设置为"javascript:void(0)",则可

启动erlang/OTP里面的Web服务器(application INETS启动过程代码分析)

上两篇分别用两种方式启动了inets中的httpd,其实本质一样的:下面简单分析一下过程,函数粒度的介绍. 1,下面是application inets的代码目录,虽然ftp.tftp.http_client.http_lib.http_server.inets_app在这目录中并列,其实inets_app扮演顶层控制角色: 只有inets_app是一个application,而其他都是module---application的一部分并且需要application启动和管理. [[email p

金山毒霸错杀httpd里面的mod_ssl.so导致apache无法启动

由于金山毒霸将/apache/modules/mod_ssl.so文件当做病毒查杀,导致apache启动时一直报错.如图:解决方法,将该版本apache中的mod_ssl.so文件放在/modules/文件夹中,重启apache搞定.

在普通class里使用onActivityResult获取从一个activity返回的数据 (待解)

通常当我们需要从当前activity a启动一个activity b,并希望在b finish之前返回一些数据给a,就使用startActivityForResult,onActivityResult,setResult这些函数.但是这些函数是定义在Activity里面的,普通的class里面没有这些函数. 当我希望在一个fragment里面startActivityOnResult另一个activity,并将返回的数据交给fragment所属的activity处理,我在fragment里面定义

Android 一个Activity 里面放置多个 Fragment 实现点击切换的Tab 页面效果

// BaseActivity 是实现的一些公共的变量和方法,可以暂时为空的类 public class HomeActivity extends BaseActivity implements View.OnClickListener { // 下面的四个按钮 private TextView mHomeView; private TextView mPondView; private TextView mMessageView; private TextView mMineView; //

Activity使用Intent启动另一个Activity

android中,从一个Activity(界面)跳转到另一个Activity时,需要使用到Intent来启动Activity.在Intent使用时,分为显式调用和隐式调用2类,显式调用就是直接调用另一个Activity的class类,隐式调用需要通过调用另一个Activity的action 来启动另一个Activity,详细如下: Intent在android中的定义为:public Intent (Context packageContext , Class<?> cls); 1.显式调用-