一、简介
在这里实现图文混合编排使用的是:TextView中预定义的类似Html的标签
二、方法
* 1、设置好html标签的文本
String html="<font>图片1</font><img src='image1'/>";
html+="<font>图片2</font><img src='image2'/>";
html+="<font>图片3</font><img src='image3'/>";
html+="<font>图片4</font><img src='image4'/>";
html+="<font>图片5</font><img src='image5'/>";
* 2、为之前的文本声明Html.fromHtml,方便TextView解析为html标签
tv_one.setText(Html.fromHtml(text1));
因为有图片,我们要获取图片源,所以上面的那句不行;
所以如下:
CharSequence text=Html.fromHtml(html, new ImageGetter() {中间省略}, null);
new ImageGetter() {中间省略}这部分比较复杂,看实例代码吧,实质就是取到R文件中图片对应的ID
* 3、将CharSequence字符串序列的文本text插入到TextView控件中即可
tv_textAndImage.setText(text);
这里是charSequence是因为Html.fromHtml方法的返回值是Spanned类型,
看下下面的类图特别好懂:
三、代码实例
效果图
代码
fry.ActivityDemo2
package fry;import java.lang.reflect.Field;import com.example.textViewDemo1.R;import android.app.Activity;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.text.Html;import android.text.Html.ImageGetter;import android.widget.TextView;public class ActivityDemo2 extends Activity{ private TextView tv_textAndImage; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity02); setTitle("TextViewDemo2"); tv_textAndImage=(TextView) findViewById(R.id.tv_textAndImage); //第一步,设置文本 String html="<font>图片1</font><img src='image1'/>"; html+="<font>图片2</font><img src='image2'/>"; html+="<font>图片3</font><img src='image3'/>"; html+="<font>图片4</font><img src='image4'/>"; html+="<font>图片5</font><img src='image5'/>"; //第二步,告诉TextView控件这是html,并且获取文本中的图片源 CharSequence text=Html.fromHtml(html, new ImageGetter() { public Drawable getDrawable(String source) { // TODO Auto-generated method stub //根据图片资源ID获取图片 //getResources就是去找项目里面的res文件夹 Drawable drawable=getResources().getDrawable(getDrawableResurceID(source)); //一定要加上边界这部分代码。要不然drawable会因为信息不完整读不出来图片 //分别是left top width height drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); return drawable; } }, null); //第三步、将CharSequence字符串序列的文本text插入到TextView控件中即可 tv_textAndImage.setText(text); } private int getDrawableResurceID(String imageName){ //利用反射机制取得图片的id try { Field field=R.drawable.class.getField(imageName); return Integer.parseInt(field.get(null).toString()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return 0; }}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容- 如何通过 JavaScript 异步编程有效避免回调地狱?(JavaScript异步编程如何避免回调地狱)
- 在 JavaScript 中,split 方法究竟该如何使用?(split方法在javascript中怎么用)
- 如何解决 java log4j2 的安全漏洞?(java log4j2安全漏洞解决方案)
- 如何在 Java 中对幂函数的性能进行优化?(如何在Java中优化幂函数的性能)
- 如何编写 Java 获取文件行数的代码?(Java获取文件行数的代码怎么写)
- Java 中 == 和 equals 的区别究竟有哪些?(java中==和equals的区别是什么)
- Java 如何读取外部配置文件?(详细教程及 SEO 优化指南)(java怎么读取外部配置文件)
- 如何使用 Java 将文件移动到指定文件夹?(怎么用java移动文件到指定文件夹)
- 在 Java 中,for 循环究竟有哪些特点呢?(java中for循环的特点是什么)
- Java 中 write 方法的详细使用指南及示例解析(java中write方法如何使用)