在Android开发中,有许多信息展示需要通过TextView来展现,如果只是普通的信息展现,使用TextView setText(CharSequence str)设置即可,但是当在TextView里的这段内容需要截取某一部分字段,可以被点击以及响应响应的操作,这时候就需要用到SpannableString了,下面通过一段简单的代码实现部分文字被点击响应,及富文本表情的实现。
public class MainActivity extends Activity {
private TextView tv,tv1;
static Context ctx = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//富文本点击响应
tv = (TextView)findViewById(R.id.tv);
tv.setTextSize(20);
tv.setText(getClickableSpan());
tv.setMovementMethod(LinkMovementMethod.getInstance());
//添加了普通字符串和表情的展示
tv1 = (TextView)findViewById(R.id.tv1);
tv1.setText(transferBiaoQing("hello android",R.drawable.ic_launcher));
}
private SpannableString getClickableSpan() {
View.OnClickListener l = new View.OnClickListener() {
@Override
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 Clickable(l), start, end,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return spanableInfo;
}
/**
* 内部类,用于截获点击富文本后的事件
* @author pro
*
*/
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);
}
@Override
public void updateDrawState(TextPaint ds) {
ds.setColor(ds.linkColor);
ds.setUnderlineText(false); //去除超链接的下划线
}
}
/**
* 将富文本转成CharSequence
* @param commonStr 普通内容
* @param bqId 表情图片
* @return
*/
public CharSequence transferBiaoQing(String commonStr,int bqId) {
return Html.fromHtml(commonStr+"<img src=\"" + bqId + "\">", imageGetter, null);
}
/**
* 获取本地图片资源
*/
private ImageGetter imageGetter = new ImageGetter() {
@Override
public Drawable getDrawable(String source) {
int id = Integer.parseInt(source);
// 根据id从资源文件中获取图片对象
Drawable d = MainActivity.this.getApplicationContext().getResources().getDrawable(id);
// 以此作为标志位,方便外部取出对应的资源id
d.setState(new int[] { id });
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
return d;
}
};
}
实现效果如下
相关推荐
最近项目里因为有一些图文混排的需求,需要在Android TextView 增加多种类型的数据,诸如图片、按钮、拨号、链接、@功能等等。 示例1:使用 SpannableString,试了一下效果一般。(新手推荐) 示例2:后面也是参考了...
Android开发之富文本编辑,基于RecyclerView + SpannableString
RichTextWrapper :TextView的包裹类,实现支持富文本,通过new RichTextWrapper(TextView v)来构造。 RTMovementMethod: 继承自Android原生的LinkMovementMethod,重写onTouchEvent方法,优化了ClickSpan(点击...
详情请移步:http://blog.csdn.net/fengkuanghun/article/details/7904284
Android SpannableString实现TextView不同大小文字居中显示。
一个Android富文本类库,支持编辑和预览,支持修改文字大小,各种样式(斜体,加粗。。。)、支持插入和删除图片。
Android用最简单的方法实现富文本框效果,可以同时文字变化和插入图片的效果,如果不会用可以看一下我的博客地址为https://blog.csdn.net/qq_45137584/article/details/111174861。
1.1 图片混排富文本控件 是一种图片和文字混合在一起的控件,文本之间可以插入图片,类似于网页的排版样式。 1.2 该控件主要是仿兴趣部落的效果,实现原理主要基于RecyclerView方案实现的。
android下textview 显示html片段,可以显示文字和图片混排,图片可以是网络图片
基于android webvie的富文本
Android SpannableString设置超链接、颜色、字体等属性 在Android中,TextView是我们最常用的用来显示文本的控件。 一般情况下,TextView中的文本都是一个样式。那么如何对于TextView中各个部分的文本来设置字体...
Android富文本编辑框,实现图文混编
android自定义富文本编辑器,支持图片插入删除,文本编辑和删除,插入链接等等
一个Android富文本类库,支持图文混排,支持编辑和预览,支持插入和删除图片
主要介绍了Android TextView使用SpannableString设置复合文本的方法,结合实例形式详细分析了Android中SpannableString类的功能及相关用法,需要的朋友可以参考下
RichEditor for Android强大的富文本编辑器 [注意:本资源来自网络,如有侵权,请联系我删除,谢谢。]
一个android用的富文本编辑器,我是写邮件用的,可以插入图片,改变颜色,字体等,还可以把它转换成html.
主要为大家详细介绍了如何利用SpannableString实现TextView的链接效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
*支持Textview设置富文本点击 *设置Textview 中部分字设置可以点击、变色,设置setMovementMethod(LinkMovementMethod.getInstance())后滑动与Textview局部点击冲突...都已经解决. *解决点击空白区域依然有点击事件 ...
Android RichText 富文本解析器,支持网络图片,图片和链接点击事件