`
wangleyiang
  • 浏览: 221723 次
社区版块
存档分类
最新评论

Android TextView中显示图片

阅读更多

在Android应用开发时,显示图片是经常遇到的一个操作。下面看看在TextView中添加图片的一些方法。

1、利用SpannableString实现的主要代码是:

 

        TextView textViewImage = (TextView) findViewById(R.id.textView2);
        ImageSpan imageSpan = new ImageSpan(this, R.drawable.a);
        SpannableString spannableString = new SpannableString("一棵参天大树!");
        spannableString.setSpan(imageSpan, spannableString.length() - 1, spannableString.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
        textViewImage.setText(spannableString);

 效果如图:


 

****有没有发现我们文字部分的感叹号“!”没有显示出来!!!『4.0的模拟器』****

 

解决办法之一是在需要显示文字后多添加一个空格,这样就不会影响到我们希望显示的文字内容!:)

 

如果希望把图片显示在文字中间,不仅可以使用TextView的append方法,还可以借助SpannableStringBuilder来实现。代码如下:

 

        TextView textViewImage = (TextView) findViewById(R.id.textView2);
        
        SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder();
        
        ImageSpan imageSpan1 = new ImageSpan(this, R.drawable.a);
        SpannableString spannableString1 = new SpannableString("一棵参天大树!");
        spannableString1.setSpan(imageSpan1, spannableString1.length() - 1, spannableString1.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
        
        ImageSpan imageSpan = new ImageSpan(this, R.drawable.b);
        SpannableString spannableString2 = new SpannableString(" ");
        spannableString2.setSpan(imageSpan, spannableString2.length() - 1, spannableString2.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
        
        spannableStringBuilder.append(spannableString1);
        spannableStringBuilder.append("=^_^=");
        spannableStringBuilder.append(spannableString2);
        
        textViewImage.setText(spannableStringBuilder);

效果如图:

 



 

说明:

  • 使用append追加想要显示的内容;
  • 追加的=^_^=完全显示,没有出现最后一个字符不能显示的问题;

2、利用Html.ImageGetter格式化图片:

  • Spanned android.text.Html.fromHtml(String source, ImageGetter imageGetter, TagHandler tagHandler)方法可以通过ImageGetter对HTML中的Image标签中的src属性做处理,通过TagHandler对HTML中的标签做处理。利用前者,返回遵循一定协议的图片资源来进行显示。本例希望显示assets下的图片资源,故创建一个assetsImageGetter来做相关处理;
  • TextView的setText方法,设置格式化后的内容并显示;

看看assetsImageGetter内都做了什么处理:

	private Html.ImageGetter assetsImageGetter = new Html.ImageGetter() {
		public Drawable getDrawable(String source) {
			Drawable drawable = null;
			InputStream inputStream = null;
			try {
				inputStream = getAssets().open(source);
				Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
				drawable = new BitmapDrawable(bitmap);
				drawable.setBounds(0, 0, bitmap.getWidth(), bitmap.getHeight());
				bitmap = null;
			} catch (Exception e) {
				e.printStackTrace();
			} finally {
				if (inputStream != null) {
					try {
						inputStream.close();
					} catch (IOException e) {
						e.printStackTrace();
					}
				}
			}
			return drawable;
		}
	};

 说明:

  • source即从img标签中提取到的src字符串,为了实现对assets下文件的处理,在调用时,需要给出assets文件夹下的图片路径;
  • 通过BitmapFactory.decodeStream();获得对应的图片资源;
  • 如果是网络图片,在此需要获得网络图片资源;

调用方法:

                TextView textViewImage = (TextView) findViewById(R.id.textView2);
		String html = "(:<img src='a.jpg'/>AND<img src='b.jpg'/>:)";
		CharSequence richText = Html.fromHtml(html, assetsImageGetter, null);
		textViewImage.setText(richText);

 说明:

  • 调用方法中图片的地址从assets目录开始;
  • 使用时,必须把图片地址设置到img标签中的src属性中;

运行效果如下:



 

3、利用TextView的setCompoundDrawables方法,可以设置四种环绕的图片:

主要代码如下:

		textViewImage = (TextView) findViewById(R.id.textView2);
		
		// 设置被环绕的文字
		textViewImage.setText("=^_^=");
		
		// 为了看到效果而设置一些属性
		textViewImage.setPadding(20, 10, 20, 10);
		textViewImage.setBackgroundColor(Color.GRAY);
		textViewImage.setGravity(Gravity.CENTER);
		
		// 设置环绕的图片
		Drawable d = getResources().getDrawable(R.drawable.a);
		d.setBounds(0, 0, 60, 60); //必须设置图片大小,否则不显示
		textViewImage.setCompoundDrawables(d , d, d, d);

 效果如图:



 
多说一句:如果你原意,应该还可以想到其它方法,呵呵!:)

 

 

  • 大小: 18.1 KB
  • 大小: 28 KB
  • 大小: 55.8 KB
  • 大小: 23.6 KB
分享到:
评论

相关推荐

    Android的TextView中显示图片和图像的方法

    本文将详细介绍如何在Android的TextView中显示图片和图像。 首先,我们要理解Android系统提供的一些基本资源类型,包括Drawable资源,这是用来表示图像的主要方式。在Android工程中,图片通常存储在res/drawable...

    android TextView 显示Gif 图片

    在Android开发中,`TextView`通常用于显示文本内容,但有时候我们可能希望在其中嵌入动态图像,如GIF格式的图片。`TextView`默认并不支持直接显示GIF动画,因此需要通过一些特殊的方式来实现这一功能。本篇将详细...

    android textview显示表情图片

    在Android开发中,TextView是用于显示...通过以上这些技术,开发者可以实现在Android应用中的TextView中灵活地显示各种表情图片,提升用户体验。不过,实际操作时还需要根据项目需求和性能要求进行适当的调整和优化。

    Android textview 文字中间加上图片

    总结,Android中的TextView不仅可以显示纯文本,还可以通过HTML、SpannableString或SpannableStringBuilder等方式插入图片,实现文字与图片的混合显示。需要注意的是,处理好图片的大小、位置以及与文字的关系,以...

    在Android TextView中显示图片的4种方式详解

    那TextView能否显示图片呢?答案是肯定的!下面列出常见的4种方式。  1、XML文件中指定属性值 这种方式应该是最常用的了,在TextView的左上右下显示图片,可用  android:drawableLeft  android:drawableTop  ...

    Android TextView显示html的demo

    这个“Android TextView显示html的demo”是一个实用的实践案例,可以帮助开发者掌握在不使用WebView的情况下在Android应用中显示HTML内容的技巧。通过深入理解和实践,开发者可以有效地提升应用的用户体验。

    Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)

    视频与票的图标跟在标题后面显示,当标题过长时icon显示到省略号…后(textview省略号显示,图标自动靠后)。 二、问题解决 TextView可以通过 android:ellipsize=end android:singleLine=true实现单行省略, 但是...

    android Textview 实现html 图片显示

    1. **使用Html.fromHtml()**:当HTML内容比较简单,且只需要显示图片时,可以使用TextView结合`Html.fromHtml()`方法。这个方法可以解析HTML字符串,并将其转化为Spanned对象,从而在TextView中显示。 ```java ...

    Android TextView加载Html中文字、图片

    本文将深入探讨如何在Android的TextView中正确加载包含文字和图片的HTML内容,并解决图片显示为小方块的常见问题。 首先,我们要了解Android中的TextView默认并不支持HTML解析和渲染。为了使TextView能够处理HTML,...

    android TextView显示图片

    在Android开发中,TextView是用于显示文本的基本组件,但其实它并不局限于纯文本,还能通过一些方式来显示图片。这个Demo就是关于如何在TextView中嵌入并显示图片的一个实例。以下我们将详细探讨如何利用TextView的...

    Android TextView显示HTML 图片居中且不缩放

    Android TextView可以支持简单的Html标签,但大部分Html标签是不支持的或者处理得不太好的,其中Img标签就是如此。如果在html中使用img标签的话就会遇到以下问题: 1、图片不能居中显示 2、图片的大小被缩小...

    Android-TextView-富文本-html图片显示.rar

    总结来说,要在 Android 的 `TextView` 中显示富文本,包括文字和图片,你需要: 1. 准备包含 HTML 格式的字符串。 2. 使用 `Html.fromHtml()` 将 HTML 转换为 `Spanned` 对象。 3. 自定义 `Html.ImageGetter` 来...

    Android TextView的图片和文字居中探索

    在Android开发中,TextView是用于显示文本的基本组件,但有时候我们不仅希望显示纯文本,还可能需要在文本中插入图片,比如图标或者表情。当文本和图片同时存在时,实现它们在TextView中的居中对齐是一项常见的需求...

    android TextView异步加载HTML(含图片)

    `tv.setText()` 最后将整个解析后的Spanned对象设置给`TextView`,这样`TextView`就会根据HTML标签展示文本样式,并且通过`URLImageParser`加载并显示图片。 在实际项目中,我们可能还需要处理一些其他细节,比如...

    android Textview显示带html文本、图片

    在Android开发中,`TextView`是用于展示文本的常用组件,但它的功能并不仅限于显示纯文本。通过一些特殊的技术,我们还可以让`TextView`显示HTML格式的文本,甚至嵌入图片。这个主题主要涉及如何利用`TextView`的...

    Android TextView实现垂直滚动效果的方法

    在Android开发中,当需要在一个TextView中展示大量文本,而屏幕空间有限时,可以使用TextView的垂直滚动功能来实现文本的连续显示。本篇文章将详细讲解如何在Android中实现TextView的垂直滚动效果。 首先,要开启...

    自定义TextVIew显示GIF图片

    以下是如何在自定义TextView中显示GIF图片的详细步骤。 首先,我们需要了解GIF图像的特性。GIF是一种支持动画的图像格式,它通过存储一系列连续的帧来创建动态效果。每帧可以有透明度,并且GIF文件中包含了帧的显示...

    android TextView 支持CSS样式

    在Android中,可以使用`Html.fromHtml()`方法将HTML字符串转换为可以在`TextView`中显示的格式。例如: ```java String html = "&lt;b&gt;Hello, World!&lt;/b&gt;"; TextView tv = (TextView) findViewById(R.id.text_view)...

    android textview图文混排

    在Android开发中,TextView是用于显示纯文本的基本组件,但有时候我们希望在文本中插入图片,实现图文混排的效果,让界面更加生动和丰富。本文将深入探讨如何在TextView中实现这一功能,主要使用Android内置的`Html`...

Global site tag (gtag.js) - Google Analytics