android SpannableString 对textview进行操作

<span style="font-size:18px;"><span style="color:#333333;"> <span style="font-size:14px;"> Android中,TextView是我们最常用的用来显示文本的控件。 
</span></span></span><p><span style="font-size:14px;color:#333333;">一般情况下,TextView中的文本都是一个样式。那么如何对于TextView中各个部分的文本来设置字体,大小,颜色,样式,以及超级链接等属性呢?下面我们通过SpannableString的具体实例操作来演示一下。</span></p>
<span style="font-size:14px;color:#333333;">// 例子: 能够对textview的指定的文字进行点击。</span>
package com.example.tuyodd;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.text.style.BackgroundColorSpan;
import android.text.style.ClickableSpan;
import android.text.style.ForegroundColorSpan;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
	/** Called when the activity is first created. */
	private TextView mClickableText;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		LinearLayout layout = new LinearLayout(this);
		mClickableText = new TextView(this);
		mClickableText.setClickable(true);
		mClickableText.setTextSize(20);

		layout.addView(mClickableText);
		setContentView(layout);
		mClickableText.setText(getClickableSpan());
		mClickableText.setMovementMethod(LinkMovementMethod.getInstance());
	}

	private SpannableString getClickableSpan() {
		View.OnClickListener l = new View.OnClickListener() {
			// 如下定义自己的动作
			public void onClick(View v) {

				Toast.makeText(MainActivity.this, "Click Success",
						Toast.LENGTH_SHORT).show();
				//可以进行你想要的操作
			}
		};
		

		SpannableString spanableInfo = new SpannableString(
				"This is a test, Click Me");
		int start = 16;
		int end = spanableInfo.length();
//		spanableInfo.setSpan(new BackgroundColorSpan(Color.RED) , start, end,
//				Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
		spanableInfo.setSpan(new Clickable(l), start, end,
				Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
		ForegroundColorSpan span = new ForegroundColorSpan(Color.GREEN);  
		spanableInfo.setSpan(span, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
		return spanableInfo;
	}
}

class Clickable extends ClickableSpan implements OnClickListener {
	private final View.OnClickListener mListener;

	public Clickable(View.OnClickListener l) {
		mListener = l;
	}

	@Override
	public void onClick(View v) {
		mListener.onClick(v);
	}
}

<span style="font-size:14px;"><strong>//常用的对于指定文字的操作</strong></span>
<pre class="java" name="code">/** 
98.* 超链接 
99.*/  
100.private void addUrlSpan() {  
101.    SpannableString spanString = new SpannableString("超链接");  
102.    URLSpan span = new URLSpan("tel:0123456789");  
103.    spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
104.    tv.append(spanString);  
105.}  
106.  
107.  
108./** 
109.* 文字背景颜色 
110.*/  
111.private void addBackColorSpan() {  
112.    SpannableString spanString = new SpannableString("颜色2");  
113.    BackgroundColorSpan span = new BackgroundColorSpan(Color.YELLOW);  
114.    spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
115.    tv.append(spanString);  
116.}  
117.  
118.  
119./** 
120.* 文字颜色 
121.*/  
122.private void addForeColorSpan() {  
123.    SpannableString spanString = new SpannableString("颜色1");  
124.    ForegroundColorSpan span = new ForegroundColorSpan(Color.BLUE);  
125.    spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
126.    tv.append(spanString);  
127.}  
128.  
129.  
130./** 
131.* 字体大小 
132.*/  
133.private void addFontSpan() {  
134.    SpannableString spanString = new SpannableString("36号字体");  
135.    AbsoluteSizeSpan span = new AbsoluteSizeSpan(36);  
136.    spanString.setSpan(span, 0, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
137.    tv.append(spanString);  
138.}  
139.  
140.  
141./** 
142.* 粗体,斜体 
143.*/  
144.private void addStyleSpan() {  
145.    SpannableString spanString = new SpannableString("BIBI");  
146.    StyleSpan span = new StyleSpan(Typeface.BOLD_ITALIC);  
147.    spanString.setSpan(span, 0, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
148.    tv.append(spanString);  
149.}  
150.  
151.  
152./** 
153.* 删除线 
154.*/  
155.private void addStrikeSpan() {  
156.    SpannableString spanString = new SpannableString("删除线");  
157.    StrikethroughSpan span = new StrikethroughSpan();  
158.    spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
159.    tv.append(spanString);  
160.}  
161.  
162./** 
163.* 下划线 
164.*/  
165.private void addUnderLineSpan() {  
166.    SpannableString spanString = new SpannableString("下划线");  
167.    UnderlineSpan span = new UnderlineSpan();  
168.    spanString.setSpan(span, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
169.    tv.append(spanString);  
170.}  
171.  
172.  
173.  
174./** 
175.* 图片 
176.*/  
177.private void addImageSpan() {  
178.    SpannableString spanString = new SpannableString(" ");  
179.    Drawable d = getResources().getDrawable(R.drawable.ic_launcher);  
180.    d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());  
181.    ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);  
182.    spanString.setSpan(span, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
183.    tv.append(spanString);  
184.}  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值