(四十八)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 android.content.res.XmlResourceParser;
import android.os.Bundle;
import android.text.Html;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.text.style.TextAppearanceSpan;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity {
    private TextView tv_content;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv_content = (TextView) this.findViewById(R.id.tv_content);
        setLink();
    }

    public  void setLink() {
        // TODO Auto-generated method stub
        // 创建一个 SpannableString对象
        SpannableString sp = new SpannableString(
                Html.fromHtml(getString(R.string.set_account_check)));
        sp.setSpan(new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                // TODO Auto-generated method stub
                startActivity(new Intent(MainActivity.this, TestActivity.class));
            }
        }, 11, 15, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);

        ColorStateList csl = null;
        XmlResourceParser xpplinkcolor = getResources().getXml(
                R.color.link_color);
        try {
            csl = ColorStateList.createFromXml(getResources(), xpplinkcolor);
        } catch (XmlPullParserException e1) {
            e1.printStackTrace();
        } catch (IOException e2) {
            e2.printStackTrace();
        }

        sp.setSpan(
                new TextAppearanceSpan("monospace",
                        android.graphics.Typeface.NORMAL, (int) tv_content
                                .getTextSize(), csl, csl), 11, 15,
                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        tv_content.setText(sp);
        // 不添加这一句,超链接不能点击
        tv_content.setMovementMethod(LinkMovementMethod.getInstance());
    }

}

3、TestActivity.java中的代码

package com.example.setlinkdemo;

import android.app.Activity;
import android.os.Bundle;

public class TestActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

4、link_color.xml文件中的代码

<?xml version="1.0" encoding="utf-8"?>
<selector  xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:color="#0099cc"/> <!-- pressed -->
    <item android:state_focused="true"
          android:color="#0099cc"/> <!-- focused -->
    <item android:color="#0099cc"/> <!-- default -->
</selector>

6、strings.xml文件中的代码

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">SetLinkDemo</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
    <string name="set_account_check">继续进行意味着您已同意服务协议</string>

</resources>

7、AndroidManifest.xml文件中的代码

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.setlinkdemo"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".TestActivity" >
        </activity>
    </application>
</manifest>
时间: 2024-07-28 22:27:07

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

Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属

在Android中,TextView是我们最常用的用来显示文本的控件. 一般情况下,TextView中的文本都是一个样式.那么如何对于TextView中各个部分的文本来设置字体,大小,颜色,样式,以及超级链接等属性呢?下面我们通过SpannableString的具体实例操作来演示一下. res-layout-main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:and

(转)Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性以及自定义链接到下一个Activity

在Android中,TextView是我们最常用的用来显示文本的控件. 一般情况下,TextView中的文本都是一个样式.那么如何对于TextView中各个部分的文本来设置字体,大小,颜色,样式,以及超级链接等属性呢?下面我们通过SpannableString的具体实例操作来演示一下. res-layout-main.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns

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

ActionScript3游戏中的图像编程(连载四十八)

总目录:http://blog.csdn.net/iloveas2014/article/details/38304477 3.1.4 简单滤镜中的渐变原理探讨 我们再简单的看一下滤镜里的渐变条. 为了尽可能地减少复杂的文字轮廓所造成的干扰,我再次使用方块进行试验. 我画了一个紫色的方块(啥颜色其实都无所谓了),然后添加渐变发光滤镜,把模糊和距离值都调大,以便看清楚渐变的轮廓,然后给渐变条随意地加上几种颜色(图 3.30) 图 3.30 模糊范围较大的渐变发光 可以看到,渐变条上的色彩从右往左地

(九)android中通过selector设置TextView的文字选中和正常时候的颜色

通过selector设置TextView的文字选中和正常时候的颜色的步骤如下所示: 1.在res下面建个文件夹color,color文件夹下面建个tv_text_color_selector.xml,tv_text_color_selector.xml中的代码如下所示: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.androi

【科普】江户四十八手图文最详细解释

完整预览图: 四十八手解説 [日本語]:http://hp.vector.co.jp/authors/VA044354/japaneseindetail.html 较难招式须注意安全: 虽然招式号称48招,不过就连推出教战手册的旅馆业者也认为,一般人试个三.五招其实就差不多了: 而且其中有些动作还属于[超高难度]级 比方说25招[搥衣棒],女方抱住两腿膝盖后侧,下半身直直往头顶举,男方则以相反方向由上向下顶. 还有27招[推车],男方站着将女方双脚抬起来,女方用双手撑在床面,身体成四十五度悬在空

你的一天也可以是四十八小时

只要你愿意,你的一天将是四十八小时,而不是二十四小时. 时间就是上帝给你的资本.命运之神是公平的,他给每个人的时间都是公平的,他给每个人的时间都不多不少:但成功女神却是挑剔的,她只让那些能把24小时变成48小时的人接近她.下面就是她的助手时间使者透露出来的成功秘笈: 直奔主题 聪明人要远离琐碎,保持焦点.由于我们一次只能踏上一条船,“船”的选择便显得格外重要.为此,经济学家告诉我们,要保持焦点:一次只做一件事情,一个时期只有一个重点.西屋电脑公司总经理迪席勒办公室门上的标语是:“不要带问题给我,

产品定位四十八招(12)定位盈利专家吴玉龙

第四十招:基于"专用"定位策略<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 广告语"就像刚刚步出美发厅"定位"美发厅的选择"牌是美发厅专用的一种洗发香波. 第四十一招:"一次性使用"定位策略 1987年,柯达公司推出一次性相机获得了巨大的成功.1993年,仅在美国就销售了930万个一次性相

QT开发(四十八)——数据库SQL接口层

QT开发(四十八)--数据库SQL接口层 SQL接口层提供了对数据库的访问,主要类包括Qt SQL模块中的QSqlDatabase.QSqlQuery.QSqlError.QSqlField.QSqlIndex和QSqlRecord.QSqlDatabase类用于创建数据库连接,QSqlQuery用于使用SQL语句实现与数据库交互. 一.QSqlDatabase 1.QSqlDatabase简介 QSqlDatabase类提供了通过连接访问数据库的接口,QSqlDatabase对象本身代表一个连