Android系统默认给TextView插入图片提供了三种方式:
1、ImageSpan
2、Html.ImageGetter
3、TextView.setCompoundDrawables(left, top, right, bottom)
1、TextView使用ImageSpan显示图片
ImageSpan span = new ImageSpan(this, R.drawable.ic_launcher);
SpannableString spanStr = new SpannableString("http://orgcent.com");
spanStr.setSpan(span, spanStr.length()-1, spanStr.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.setText(spanStr);
PS:关于SpannableString相关的其他span,查看[Android教程]TextView使用SpannableString设置复合文本
2、使用Html.ImageGetter显示网页中的图片
查看文章:[Android教程]TextView显示Html类解析的网页和图片及自定义标签
3、在TextView四周显示图片
mTVText.setText("setCompoundDrawables");
Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
d.setBounds(0, 0, 50, 50); //必须设置图片大小,否则不显示
mTVText.setCompoundDrawables(d , null, null, null);
不同点击事件
package com.example.textviewclick;
import android.app.Activity;
import android.os.Bundle;
import android.text.Html;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.TextPaint;
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;
import android.os.Bundle;
import android.text.Html;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.TextPaint;
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 MainActivity extends Activity {
TextView mTextView2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.textview);
mTextView2 = (TextView)findViewById(R.id.text2);
/*********** 同一个TextView不同文字的点击事件*******/
StringBuilder actionText = new StringBuilder();
actionText
.append("<a style=\"text-decoration:none;\" href='username'>"
+ "username:" + " </a>");
actionText
.append("隐形人"
+ "<a style=\"color:blue;text-decoration:none;\" href='singstar'> "
+ " love" + "</a>");
actionText.append(" : \"" + "孙燕姿" + "\"");
mTextView2.setText(Html.fromHtml(actionText.toString()));
mTextView2.setMovementMethod(LinkMovementMethod
.getInstance());
CharSequence text = mTextView2.getText();
int ends = text.length();
Spannable spannable = (Spannable) mTextView2.getText();
URLSpan[] urlspan = spannable.getSpans(0, ends, URLSpan.class);
SpannableStringBuilder stylesBuilder = new SpannableStringBuilder(text);
stylesBuilder.clearSpans(); // should clear old spans
for (URLSpan url : urlspan) {
TextViewURLSpan myURLSpan = new TextViewURLSpan(url.getURL());
stylesBuilder.setSpan(myURLSpan, spannable.getSpanStart(url),
spannable.getSpanEnd(url), spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
mTextView2.setText(stylesBuilder);
}
private class TextViewURLSpan extends ClickableSpan {
private String clickString;
TextView mTextView2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.textview);
mTextView2 = (TextView)findViewById(R.id.text2);
/*********** 同一个TextView不同文字的点击事件*******/
StringBuilder actionText = new StringBuilder();
actionText
.append("<a style=\"text-decoration:none;\" href='username'>"
+ "username:" + " </a>");
actionText
.append("隐形人"
+ "<a style=\"color:blue;text-decoration:none;\" href='singstar'> "
+ " love" + "</a>");
actionText.append(" : \"" + "孙燕姿" + "\"");
mTextView2.setText(Html.fromHtml(actionText.toString()));
mTextView2.setMovementMethod(LinkMovementMethod
.getInstance());
CharSequence text = mTextView2.getText();
int ends = text.length();
Spannable spannable = (Spannable) mTextView2.getText();
URLSpan[] urlspan = spannable.getSpans(0, ends, URLSpan.class);
SpannableStringBuilder stylesBuilder = new SpannableStringBuilder(text);
stylesBuilder.clearSpans(); // should clear old spans
for (URLSpan url : urlspan) {
TextViewURLSpan myURLSpan = new TextViewURLSpan(url.getURL());
stylesBuilder.setSpan(myURLSpan, spannable.getSpanStart(url),
spannable.getSpanEnd(url), spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
mTextView2.setText(stylesBuilder);
}
private class TextViewURLSpan extends ClickableSpan {
private String clickString;
public TextViewURLSpan(String clickString) {
this.clickString = clickString;
}
this.clickString = clickString;
}
@Override
public void updateDrawState(TextPaint ds) {
ds.setColor(MainActivity.this.getResources().getColor(R.color.text_color));
ds.setUnderlineText(false); //去掉下划线
}
@Override
public void onClick(View widget) {
if (clickString.equals("username")) {
Toast.makeText(getApplication(), clickString, Toast.LENGTH_LONG)
.show();
} else if (clickString.equals("singstar")) {
Toast.makeText(getApplication(), clickString, Toast.LENGTH_LONG)
.show();
}
}
}
public void updateDrawState(TextPaint ds) {
ds.setColor(MainActivity.this.getResources().getColor(R.color.text_color));
ds.setUnderlineText(false); //去掉下划线
}
@Override
public void onClick(View widget) {
if (clickString.equals("username")) {
Toast.makeText(getApplication(), clickString, Toast.LENGTH_LONG)
.show();
} else if (clickString.equals("singstar")) {
Toast.makeText(getApplication(), clickString, Toast.LENGTH_LONG)
.show();
}
}
}
}
相关推荐
Android自定义TextView链接点击和长按事件
Android 文本类中字体颜色的改变,并可以相应点击事件
Android textview 文字中间加上图片
android TextView android TextView
Android TextView 文字片点击特效、点击事件监听实现了TextView 文字片段 点击_长按 事件监听 以及点击特效关键技术 在自定义Span中对TextPaint的color、bgcolor等属性设置选中时的文字颜色,背景色、 在自定义...
安卓中的TextView 实现部分文字点击事件,通过Spannable 实现
Android TextView中链接的实现,实现打开网页和拨打电话。
可直接运行,方便直接添加到项目中 解决了android 加载Html页面只出现文字,图片加载不出来,直接显示小方块的问题
android TextView 支持CSS样式
android textview 部分文本变色,点击可跳转到指定的链接
本文实例讲述了Android TextView实现垂直滚动效果的方法。分享给大家供大家参考,具体如下: 在TextView中,如果文本很长,可能需要实现垂直滚动显示文本的效果。这里需要在XML布局文件中为TextView设置如下几个属性...
android下textview 显示html片段,可以显示文字和图片混排,图片可以是网络图片
Android TextView 去掉自适应默认的fontpadding的实现方法 最近在项目中使用textview时发现在使用Android:layout_height=”wrap_content”这个属性设置后,textview会有默认的padding,也就是fontpadding。这样就会...
android textview 指定片段添加点击事件 关注博客 http://himici.com
android实现TextView文字部分渐变色;LinearGradientFontSpan SpannableString
android Textview 实现html 图片点击 两种方式 一种是用webview ,调用jsInterface实现 另一种是 textview 使用Html.from()方法
Android TextView的图片和文字居中探索,获取TextView中图片和文字的宽度和高度,并根据TextView的宽高计算居中所需要的偏移量
android textview 文字排版 换行
MTextView,解决Android TextView提前换行的问题
Android 点击TextView 改变背景色