TextView实现图文混合编排的方法

 更新时间:2017年08月04日 14:07:58   作者:饭饭_fan  
这篇文章主要为大家详细介绍了TextView实现图文混合编排的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

一、简介

在这里实现图文混合编排使用的是: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);
    
  }
  /**
   * 获取图片的资源ID
   * @param imageName 图片的名称
   * @return 图片对应的ID
   * 
   */
  private int getDrawableResurceID(String imageName){
    //利用反射机制取得图片的id
    /*
     * 其实是找com.example.textViewDemo1.R.drawable.image1的值,也就是
     * public static final int image1=0x7f020001;
     * 也就是0x7f020001
     * 例如image1,返回的就是0x7f020001
     */
    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;
    
  }
}

/textViewDemo1/res/layout/activity02.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical" >
  <TextView 
    android:id="@+id/tv_textAndImage"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    />

</LinearLayout>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android studio中生成引用.aar和.jar的方法详解

    Android studio中生成引用.aar和.jar的方法详解

    这篇文章主要是讲解.aar的生成与引用,文中的内容属于完全基础性概念,对刚学习使用Android studio的朋友们很有帮助,有需要的可以参考学习,下面来一起看看吧。
    2016-09-09
  • Android ViewDragHelper仿淘宝拖动加载效果

    Android ViewDragHelper仿淘宝拖动加载效果

    这篇文章主要为大家详细介绍了Android ViewDragHelper仿淘宝拖动加载效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • 用Flutter开发自定义Plugin的方法示例

    用Flutter开发自定义Plugin的方法示例

    这篇文章主要介绍了用Flutter开发自定义Plugin的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • Android编程使用WebView实现与Javascript交互的方法【相互调用参数、传值】

    Android编程使用WebView实现与Javascript交互的方法【相互调用参数、传值】

    这篇文章主要介绍了Android编程使用WebView实现与Javascript交互的方法,可实现基于WebView与JavaScript相互调用参数、传值的功能,需要的朋友可以参考下
    2017-03-03
  • Android仿360市场下载按钮的实现方法

    Android仿360市场下载按钮的实现方法

    这篇文章主要给大家介绍了关于利用Android实现360市场下载按钮效果的方法,文中给出了详细的示例代码供大家参考学习,并在文末给出了源码供大家下载,需要的朋友们下面跟着小编一起来学习学习吧。
    2017-05-05
  • Android集成百度地图开发流程和注意事项

    Android集成百度地图开发流程和注意事项

    现在很多项目都需要集成百度地图,所以就把自己做过一个项目的经验写出来和大家分享,方便自己和大家使用的时候参考借鉴,下面就来一起看看Android集成百度地图开发流程和注意事项吧。
    2016-09-09
  • 仿饿了吗点餐界面ListView联动的实现

    仿饿了吗点餐界面ListView联动的实现

    这篇文章主要介绍了仿饿了吗点餐界面ListView联动的实现的相关资料,本文介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • Flutter应用程序实现隐私屏幕示例解析

    Flutter应用程序实现隐私屏幕示例解析

    这篇文章主要为大家介绍了Flutter应用程序实现隐私屏幕示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Android背景图下拉回弹效果实例

    Android背景图下拉回弹效果实例

    大家好,本篇文章主要讲的是Android背景图下拉回弹效果实例,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • android实现动态显示隐藏进度条

    android实现动态显示隐藏进度条

    这篇文章主要为大家详细介绍了android实现动态显示隐藏进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08

最新评论