zoukankan      html  css  js  c++  java
  • TextView与Html相结合的具体方法?


    TextView与Html相结合的具体方法?


    android教程之textview解析带图片的html示例

    Android中的TextView,本身就支持部分的Html格式标签。这其中包括常用的字体大小颜色设置,文本链接等。使用起来也比较方便,只需要使用Html类转换一下即可。比如:

    textView.setText(Html.fromHtml(str));

    一、实现TextView里的文字有不同颜色

    import android.text.Html;

    TextView t3 = (TextView) findViewById(R.id.text3);
    t3.setText(Html.fromHtml( "<b>text3:</b> Text with a " + "<a href="http://www.google.com">link</a> " +"created in the Java source code using HTML."));

    二、TextView显示html文件中的图片
    我们知道要让TextView解析和显示Html代码。可以使用

    Spanned text = Html.fromHtml(source);
    tv.setText(text);

    来实现,这个用起来简单方便。
    但是,怎样让TextView也显示Html中<image>节点的图像呢?
    我们可以看到fromHtml还有另一个重构:

    fromHtml(String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler)
    实现一下ImageGetter就可以让图片显示了:

    ImageGetter imgGetter = new Html.ImageGetter() {
    @Override
    public Drawable getDrawable(String source) {
    Drawable drawable = null;
    drawable = Drawable.createFromPath(source); // Or fetch it from the URL
    // Important
    drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable
    .getIntrinsicHeight());
    return drawable;
    }
    };

    至于TagHandler,我们这里不需要使用,可以直接传null。

    ---------------------
    public class MainActivity extends Activity {

    private Handler handler;
    private String html;
    private TextView tv;
    private ProgressBar bar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // 网上找的html数据
    html = "<html><head><title>TextView使用HTML</title></head><body><p><strong>强调</strong></p><p><em>斜体</em></p>"
    + "<p><a href="http://www.jb51.net">超链接HTML入门</a>学习HTML!</p><p><font color="#aabb00">颜色1"
    + "</p><p><font color="#00bbaa">颜色2</p><h1>标题1</h1><h3>标题2</h3><h6>标题3</h6><p>大于>小于<</p><p>"
    + "下面是网络图片</p><img src="http://www.jb51.net/1207.jpg"/></body>"
    + "下面是网络图片</p><img src="http://www.jb51.net/207.jpg"/></body></html>";

    tv = (TextView) this.findViewById(R.id.id);
    bar = (ProgressBar) this.findViewById(R.id.id_bar);
    tv.setMovementMethod(ScrollingMovementMethod.getInstance());// 滚动


    handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {

    if (msg.what == 0x101) {
    bar.setVisibility(View.GONE);
    tv.setText((CharSequence) msg.obj);
    }
    super.handleMessage(msg);
    }
    };

    // 因为从网上下载图片是耗时操作 所以要开启新线程
    Thread t = new Thread(new Runnable() {

    Message msg = Message.obtain();
    @Override
    public void run() {

    bar.setVisibility(View.VISIBLE);
    /**
    * 要实现图片的显示需要使用Html.fromHtml的一个重构方法:public static Spanned
    * fromHtml (String source, Html.ImageGetterimageGetter,
    * Html.TagHandler
    * tagHandler)其中Html.ImageGetter是一个接口,我们要实现此接口,在它的getDrawable
    * (String source)方法中返回图片的Drawable对象才可以。
    */

    ImageGetter imageGetter = new ImageGetter() {
    @Override
    public Drawable getDrawable(String source) {

    URL url;
    Drawable drawable = null;
    try {
    url = new URL(source);
    drawable = Drawable.createFromStream(url.openStream(), null);
    drawable.setBounds(0, 0,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());

    } catch (MalformedURLException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }

    return drawable;
    }
    };

    CharSequence test = Html.fromHtml(html, imageGetter, null);
    msg.what = 0x101;
    msg.obj = test;
    handler.sendMessage(msg);
    }
    });

    t.start();
    }



    }

  • 相关阅读:
    matlab矩阵中如何去掉重复的行;如何找到相同的行,并找到其位置
    Coursera 机器学习 第9章(下) Recommender Systems 学习笔记
    机器学习基石笔记1——在何时可以使用机器学习(1)
    Coursera 机器学习 第9章(上) Anomaly Detection 学习笔记
    matlab安装过程的被要求的配置程序
    jdk环境变量配置
    Coursera 机器学习 第8章(下) Dimensionality Reduction 学习笔记
    Coursera 机器学习 第8章(上) Unsupervised Learning 学习笔记
    Coursera 机器学习 第7章 Support Vector Machines 学习笔记
    linux服务器---squid限制
  • 原文地址:https://www.cnblogs.com/awkflf11/p/5502746.html
Copyright © 2011-2022 走看看