天和大家交流一下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的属性和方法。
*请认真填写需求信息,我们会在24小时内与您取得联系。