TextView中如何支持html标签,放置图片和动作标签
TextView文本框和输入框几乎是一个正常的带界面的可交互的Android应用的基本组成
TextView主要作用是显示文本内容,其实还可以显示图片,当然有必要的话还可以为文本内容添加动作相应用户的触摸动作
TextView:
1.支持格式化
a.html格式化 *
b.为字体或背景添加独立的颜色
2.放置图片 *
3.产生互动事件
a.html格式化后可以生成A标签产生动作 *
b.自动根据内容格式匹配动作
c.自定义互动事件
Android支持简单的html标签,方便对其内容进行格式化处理
Android支持的html标签非常有限:
<p>,<br>,<font>,<b>,<i>,<tt>,<a>,<img>,<big>,<small>
a,如果TextView的Text中msg含有html标签,则需要对msg进行格式化,增加如下代码:
Spanned s=Html.fromHtml(msg);
b,如果TextView的Text中msg含有动作标签如a标签,则需要增加如下代码:
txt.setMovementMethod(LinkMovementMethod.getInstance());
c,如果TextView中需要放置图片,则比较复杂,看如下代码
activity_main.xml代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal"
>
<Button
android:id="@+id/leftbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="左按钮"
/>
<Button
android:id="@+id/rightbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="右按钮"
/>
</LinearLayout>
MainActivity.java代码:
package com.example.exercise3;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void myClick(View view){
Intent intent=new Intent();
switch(view.getId()){
case R.id.btn1:
intent.setClass(this, HtmlFormatText.class);
break;
case R.id.btn2:
break;
}
this.startActivity(intent);
}
}
点击第一个Button,则会启动HtmlFormtText.java,显示界面为html_text.xml
html_text.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/txtHtml"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
</TextView>
</LinearLayout>
HtmlFormatText.java代码如下:
package com.example.exercise3;
import java.lang.reflect.Field;
import android .app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.Html;
import android.text.Html.ImageGetter;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.widget.TextView;
public class HtmlFormatText extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.html_text);
//Android支持简单的html标签,方便对其内容进行格式化处理
//Android支持的html标签非常有限:
//<p>,<br>,<font>,<b>,<i>,<tt>,<a>,<img>,<big>,<small>
String msg="<big>大字体</big>"+"<small>小字体</small>"+"<p>haha</p>";
msg+="<tt>my name is wangkang </tt><br>";
msg+="<font color='red'>五星红旗是红色的</font>";
msg+="<a href='http://10.0.2.2:8081'>打开tomcat首页</a>";
//<img>标签可以实现文本内容中插入图片的效果,但是此img非彼img
msg+="表情一<img src='face1'></img>"+"表情二<img src='face2'></img>";
TextView txt=(TextView)findViewById(R.id.txtHtml);
//Spanned个人理解为可修改的字符串,类似StringBuffer的概念,但是功能上远超出StringBuffer
//Spanned s=Html.fromHtml(msg);//msg中包含有html标签,所以必须对msg进行格式化
/*一,常规处理(对于图片)
Spanned s = Html.fromHtml(msg, new ImageGetter() {
public Drawable getDrawable(String source) {
// TODO Auto-generated method stub
Drawable d = null;
if (source.equals("face1")) {
d = getResources().getDrawable(R.drawable.face1);
}
//切记指定图片大小,默认是0*0
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
return d;
}
}, null);
*/
//二,反射处理
//原理:src的内容就是图片的索引名称,我们获取名称后直接反射对应的属性值
Spanned s=Html.fromHtml(msg, new ImageGetter() {
//getDrawable方法会在Html.fromHtml方法扫描msg内容的时候,一旦发现有img标签就会触发该方法
@Override
public Drawable getDrawable(String source) {
// TODO Auto-generated method stub
Drawable d=null;
//1.获取包含索引名称的类信息
Class cls=R.drawable.class;
try {
//2.根据名字获取对应的属性
Field f=cls.getDeclaredField(source);
//3.获取属性的值作为id取得对应的图片资源
d=getResources().getDrawable(f.getInt(null));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
d.setBounds(0,0,d.getIntrinsicWidth(),d.getIntrinsicHeight());
return d;
}
}, null);
//如果文本内容带动作(比如a标签),那么必须添加以下代码,否则只有视觉效果,没有实际功能
txt.setMovementMethod(LinkMovementMethod.getInstance());
txt.setText(s);
}
}
此练习作为学习使用, 以便日后查看。。。
TextView中如何支持html标签,放置图片和动作标签的更多相关文章
- Android(java)学习笔记139:在TextView组件中利用Html插入文字或图片
首先我们看看代码: 1.activity_main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/r ...
- Android(java)学习笔记81:在TextView组件中利用Html插入文字或图片
1. TextView中利用Html插入文字或者图片: 首先我们看看代码: (1)activity_main.xml: <LinearLayout xmlns:android="htt ...
- JavaWeb笔记——Jsp的指令、内置对象和动作标签
JSP三大指令 一个jsp页面中,可以有0~N个指令的定义! 1. page --> 最复杂:<%@page language="java" info=" ...
- jsp 三大指令和动作标签
jsp三大指令 一个jsp页面中可以有0-N个指令 1.page--->最复杂:<%@page language="" ...%> *pageEncoding和c ...
- day12(jsp指令&内置对象&动作标签、JavaBean、EL表达式&函数库)
day12 JSP指令 JSP指令概述 JSP指令的格式:<%@指令名 attr1="" attr2="" %>,一般都会把JSP指令放到JSP文件 ...
- JSP基础--动作标签
JSP动作标签 1 JSP动作标签概述 动作标签的作用是用来简化Java脚本的! JSP动作标签是JavaWeb内置的动作标签,它们是已经定义好的动作标签,我们可以拿来直接使用. 如果JSP动作标签不 ...
- 我的Android进阶之旅------> Android在TextView中显示图片方法
面试题:请说出Android SDK支持哪些方式显示富文本信息(不同颜色.大小.并包括图像的文本信息).并简要说明实现方法. 答案:Android SDK支持例如以下显示富文本信息的方式. 1.使用T ...
- TextView显示HTML文本时<IMG>标签指定图片的显示处理
TextView显示文本时是支持一些HTML标签的(具体支持那些标签会在下面附录列出),不会需要先用HTML的static方法fromHtml来转换一下. Spanned text = Html.fr ...
- 我的Android进阶之旅------> Android在TextView中显示图片方法
面试题:请说出Android SDK支持哪些方式显示富文本信息(不同颜色.大小.并包含图像的文本信息),并简要说明实现方法. 答案:Android SDK支持如下显示富文本信息的方式. 1.使用Tex ...
随机推荐
- javascript 如何获取return回来的对象值
function aa(){ var b = 1; var c = b+2; return{ a1:b, a2:c } } var bb=aa(); alert(bb.a1);
- android用canvas绘制两种波纹效果
波形效果有几种不同的呈现形式,比如从中间向四周散开的波形,也就是熟知的水涟漪:还有上下波动的曲线,像五线谱等.英文中可以称作Wave或者Ripple,所以暂且叫它们WaveView.WaveLayo ...
- MapReduce整体架构分析
继前段时间分析Redis源代码一段时间之后.我即将開始接下来的一段技术学习的征程.研究的技术就是当前很火热的Hadoop,可是一个Hadoop生态圈是很庞大的.所以首先我的打算是挑选当中的一部分模块, ...
- ALV前导零的问题
ALV的IT_FIELDCAT参数中L_ZERO 选项置位的话,对NUM类型的前导0是可以输出的,但是有个很重要的前提条件,NO_ZERO不可以置位,否则L_ZERO是失效的.
- Spark Sreaming与MLlib机器学习
Spark Sreaming与MLlib机器学习 本来这篇是准备5.15更的,但是上周一直在忙签证和工作的事,没时间就推迟了,现在终于有时间来写写Learning Spark最后一部分内容了. 第10 ...
- 用DELPHI的RTTI实现对象的XML持久化
去年我花了很多时间尝试用DELPHI进行基于XML的WEB应用开发.起初的设想是很美好的,但结果做出来的东西很简陋.一部分原因就在于XML到Object之间的数据绑定实现太麻烦(另一部分是因为对XSL ...
- 基础知识(9)- Swing用户界面组件
9.1 Swing和模型-视图-控制器设计模式 9.1.1 设计模式 9.1.2 模型-视图-控制器模式 9.1.3 Swing按钮的模型-视图-控制器分析 9.2 布局管理概述 9.2.1 ...
- Delphi图像处理 -- 最大值
阅读提示: <Delphi图像处理>系列以效率为侧重点,一般代码为PASCAL,核心代码采用BASM. <C++图像处理>系列以代码清晰,可读性为主,全部使用C ...
- Swift - 歌曲播放样例(附带播放时间和播放进度)
使用MPMoviePlayerController我们可以是进行音乐播放,下面是一个播放器样例.同时,播放时还可以显示播放时间和播放进度. 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
- HDU1849 Rabbit and Grass()
用异或看取得的值是否为0推断 思想换没搞懂 #include<stdio.h> int main() { int ans,n,a; while(scanf("%d",& ...