<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.}