android图文混排
2016-01-18 18:29
375 查看
package com.example.imgandtext;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.text.style.ForegroundColorSpan;
import android.text.style.ImageSpan;
import android.text.style.StrikethroughSpan;
import android.text.style.StyleSpan;
import android.text.style.URLSpan;
import android.text.style.UnderlineSpan;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity
{
private TextView text;
private TextView text01;
private Button btn;
private Button btn2;
private Button btn3;
int i=0;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text=(TextView)findViewById(R.id.textView1);
text01=(TextView)findViewById(R.id.TextView01);
btn=(Button)findViewById(R.id.button1);
btn2=(Button)findViewById(R.id.button2);
btn3=(Button)findViewById(R.id.button3);
btn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
text.append(ImgAndText(R.drawable.ic_launcher,text));
}
});
btn2.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
text.append("刘");
}
});
btn3.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
text01.append(text.getText());
}
});
/* //SpannableString文本类,包含不可变的文本但可以用已有对象替换和分离。
//可变文本类参考SpannableStringBuilder
SpannableString ss = new SpannableString("红色打电话斜体删除线绿色下划线图片:.");
//用颜色标记文本
ss.setSpan(new ForegroundColorSpan(Color.RED), 0, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //setSpan时需要指定的 flag,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前后都不包括).
//用超链接标记文本
ss.setSpan(new URLSpan("tel:4155551212"), 2, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//用样式标记文本(斜体)
ss.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 5, 7, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//用删除线标记文本
ss.setSpan(new StrikethroughSpan(), 7, 10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//用下划线标记文本
ss.setSpan(new UnderlineSpan(), 10, 16, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//用颜色标记
ss.setSpan(new ForegroundColorSpan(Color.GREEN), 10, 13, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//获取Drawable资源
Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
//创建ImageSpan
ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);
//用ImageSpan替换文本
ss.setSpan(span, 18, 19, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
ss.setSpan(span, 2, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
System.out.println("9999999999999999:"+ss.length());
text.setText(ss);
text.setMovementMethod(LinkMovementMethod.getInstance()); //实现文本的滚动
*/ }
private SpannableString ImgAndText(int imgId,Object text)
{
Bitmap bitmap=BitmapFactory.decodeResource(getResources(), imgId);
bitmap=Bitmap.createScaledBitmap(bitmap, 40, 40, true);
ImageSpan imageSpan=new ImageSpan(MainActivity.this,bitmap);
SpannableString spanStr=new SpannableString(text.getClass().toString());
spanStr.setSpan(imageSpan, 0, text.getClass().toString().trim().length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
return spanStr;
}
}
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.text.style.ForegroundColorSpan;
import android.text.style.ImageSpan;
import android.text.style.StrikethroughSpan;
import android.text.style.StyleSpan;
import android.text.style.URLSpan;
import android.text.style.UnderlineSpan;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity
{
private TextView text;
private TextView text01;
private Button btn;
private Button btn2;
private Button btn3;
int i=0;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text=(TextView)findViewById(R.id.textView1);
text01=(TextView)findViewById(R.id.TextView01);
btn=(Button)findViewById(R.id.button1);
btn2=(Button)findViewById(R.id.button2);
btn3=(Button)findViewById(R.id.button3);
btn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
text.append(ImgAndText(R.drawable.ic_launcher,text));
}
});
btn2.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
text.append("刘");
}
});
btn3.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
text01.append(text.getText());
}
});
/* //SpannableString文本类,包含不可变的文本但可以用已有对象替换和分离。
//可变文本类参考SpannableStringBuilder
SpannableString ss = new SpannableString("红色打电话斜体删除线绿色下划线图片:.");
//用颜色标记文本
ss.setSpan(new ForegroundColorSpan(Color.RED), 0, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //setSpan时需要指定的 flag,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前后都不包括).
//用超链接标记文本
ss.setSpan(new URLSpan("tel:4155551212"), 2, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//用样式标记文本(斜体)
ss.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 5, 7, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//用删除线标记文本
ss.setSpan(new StrikethroughSpan(), 7, 10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//用下划线标记文本
ss.setSpan(new UnderlineSpan(), 10, 16, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//用颜色标记
ss.setSpan(new ForegroundColorSpan(Color.GREEN), 10, 13, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//获取Drawable资源
Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
//创建ImageSpan
ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);
//用ImageSpan替换文本
ss.setSpan(span, 18, 19, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
ss.setSpan(span, 2, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
System.out.println("9999999999999999:"+ss.length());
text.setText(ss);
text.setMovementMethod(LinkMovementMethod.getInstance()); //实现文本的滚动
*/ }
private SpannableString ImgAndText(int imgId,Object text)
{
Bitmap bitmap=BitmapFactory.decodeResource(getResources(), imgId);
bitmap=Bitmap.createScaledBitmap(bitmap, 40, 40, true);
ImageSpan imageSpan=new ImageSpan(MainActivity.this,bitmap);
SpannableString spanStr=new SpannableString(text.getClass().toString());
spanStr.setSpan(imageSpan, 0, text.getClass().toString().trim().length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
return spanStr;
}
}
相关文章推荐
- Android性能优化之加快应用启动速度
- Android之getSystemService
- Android4.4 framework分析——ActivityManagerService的启动和对Activity的管理
- Android和IOS开发学习路线
- Android中ActivityManagerService与应用程序(客户端)通信模型分析
- Androidx学习笔记(3)-- 电话拨号器编写
- 【开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位网友补充完善
- Android Studio 混淆 相关
- Android新增一个音频类型及双音频输出的实现
- Android 动画相关笔记
- Android快速开发系列 10个常用工具类
- 解决Android Studio 无法检查更新问题
- Android Tab实现之ViewPager+FragmentActivity
- Android 如何支持平板和手机
- Android 风格与主题(style and theme)
- android bitmap图片下载三级缓存
- 常用的android弹出对话框 几乎包含了所有(1)
- Android中achartengine与ScrollView的冲突问题解决
- Android活动(Activity)状态与生命周期总结
- Android模拟器对应的电脑快捷键说明