整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

详解HtmlTextView使用,在android上显示web端html内容

天和大家交流一下HtmlTextView的使用,HtmlTextView是一个开源的原生安卓第三方控件,主要的用途是直接把web端的html内容解析后展示在安卓手机上。应用场景很多,比如很多新闻类APP在web端编辑入库后是html的格式,这时候如果想显示在手机上,HtmlTextView就是一个很好的选择,当然有人会说谷歌自己的TextView通过一些方法也可以实现,但是我试过,效果简直不能再差,而且使用起来很复杂。这个HtmlTextView有多好,话不多说,直接上图:

在使用的时候,第一步是引入控件的依赖:

repositories {
jcenter()
}

dependencies {
compile 'org.sufficientlysecure:html-textview:4.0'
}

引入依赖后有几种不同的使用方式,根据自己实际的场景进行选择:

大部分的html标签都已经支持:

<p>
<div> handled exactly like <p>
<br>
<b>
<i>
<strong> (bug on some Android versions: generates italic)
<em> (bug on some Android versions: generates bold)
<u>
<tt>
<dfn>
<sub>
<sup>
<blockquote>
<cite>
<big>
<small>
<font color="..." face="...">
<h1>, <h2>, <h3>, <h4>, <h5>, <h6>
<a href="...">
<img src="...">

最后,一个最重要的问题,也是我最近使用遇到的最大的问题:

当html里面有src或者href等的时候,如果不做处理,APP会出现无法跳转至浏览器并且崩溃闪退的情况。解决这个问题的办法就是在方法里添加对应的点击事件,如下:

实现新闻详情的时候,安卓也有类似富文本的控件,但是使用webview或者textview等方法,每种方法各有优劣,不是很完美。今天给大家介绍一个安卓控件——HtmlTextView,实现详情页图文混排的显示。
1.在gradle引入控件

dependencies {
    compile 'org.sufficientlysecure:html-textview:4.0'
}
123

2.在布局页面使用上面的控件

<org.sufficientlysecure.htmltextview.HtmlTextView
            android:id="@+id/html_text"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:textAppearance="@android:style/TextAppearance.Small" />
12345

3.在activity使用相关方法,此处是其他页面网络获取解析传递过来的html内容,HtmlHttpImageGetter方法不需要手动编写(较textview实现的时候不再需要重写、继承ImageGetter方法,可查看上篇博客)

public class ContentActivity extends BaseActivity {
    private String htmlContents = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_content);
        HtmlTextView htmlTextView = findViewById(R.id.html_text);
        final Intent intent = getIntent();
        Bundle bundle = intent.getExtras();
        htmlContents = bundle.getCharSequence("contents").toString();
        htmlTextView.setHtml(htmlContents, new HtmlHttpImageGetter(htmlTextView));

    }
}
123456789101112131415

4.让我们看一下最终实现的效果


有相关疑问可以留言,感谢点赞转发,禁止转载


上图是视图的开发指导,官方给了个链接。

国内地址:

https://developer.android.google.cn/guide/topics/ui/index.html

view的使用

"直译"

窗口中的所有视图都排列在一棵树中.

可以通过代码或通过在一个或多个XML布局中指定视图树来添加视图.

有许多专门的视图子类可以充当控件,或者可以显示文本,图像或其他内容。

创建视图树后,通常可能需要执行几种类型的常见操作.



"人话"

窗口也就是windows,windows上有视图"树",我们在画页面时其实就是往视图树上添加view,当然,添加的方式即可以是xml也可以是代码的形式。下面那两句话,举个例子就是TextView的常见类型操作setText();


总结

我们对整个view学习要建立一个体系,有一个脉络。(自己脑海中有一个大体的脉络,再去补充一个一个知识点)

view的基本概念->view如何使用->如何自定义view

之后我会分享我的"脉络",希望大家多多支持.


后续:

第一期:view的简单介绍。

第二期:view添加到页面的方式。

下一期:view的属性和方法。