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标签,放置图片和动作标签的更多相关文章

  1. Android(java)学习笔记139:在TextView组件中利用Html插入文字或图片

    首先我们看看代码: 1.activity_main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/r ...

  2. Android(java)学习笔记81:在TextView组件中利用Html插入文字或图片

    1. TextView中利用Html插入文字或者图片: 首先我们看看代码: (1)activity_main.xml: <LinearLayout xmlns:android="htt ...

  3. JavaWeb笔记——Jsp的指令、内置对象和动作标签

    JSP三大指令   一个jsp页面中,可以有0~N个指令的定义! 1. page --> 最复杂:<%@page language="java" info=" ...

  4. jsp 三大指令和动作标签

    jsp三大指令 一个jsp页面中可以有0-N个指令 1.page--->最复杂:<%@page language="" ...%> *pageEncoding和c ...

  5. day12(jsp指令&内置对象&动作标签、JavaBean、EL表达式&函数库)

    day12 JSP指令 JSP指令概述 JSP指令的格式:<%@指令名 attr1="" attr2="" %>,一般都会把JSP指令放到JSP文件 ...

  6. JSP基础--动作标签

    JSP动作标签 1 JSP动作标签概述 动作标签的作用是用来简化Java脚本的! JSP动作标签是JavaWeb内置的动作标签,它们是已经定义好的动作标签,我们可以拿来直接使用. 如果JSP动作标签不 ...

  7. 我的Android进阶之旅------&gt; Android在TextView中显示图片方法

    面试题:请说出Android SDK支持哪些方式显示富文本信息(不同颜色.大小.并包括图像的文本信息).并简要说明实现方法. 答案:Android SDK支持例如以下显示富文本信息的方式. 1.使用T ...

  8. TextView显示HTML文本时<IMG>标签指定图片的显示处理

    TextView显示文本时是支持一些HTML标签的(具体支持那些标签会在下面附录列出),不会需要先用HTML的static方法fromHtml来转换一下. Spanned text = Html.fr ...

  9. 我的Android进阶之旅------> Android在TextView中显示图片方法

    面试题:请说出Android SDK支持哪些方式显示富文本信息(不同颜色.大小.并包含图像的文本信息),并简要说明实现方法. 答案:Android SDK支持如下显示富文本信息的方式. 1.使用Tex ...

随机推荐

  1. 单选按钮易忽略的Group属性

    Group就其意思就是一组的意思.就是说用于选择多个控件组合,选了TRUE后,你就可以为这组新建一个变量.把一组控件当一个控件来使用.例如多个单选按钮用group属性,这样你就可以用一个变量来管理这些 ...

  2. scrum经验

    Scrum是基于过程控制理论的经验方法,倡导自组织团队:其运行框架核心是迭代增量型并行开发,也是“适应性”的软件开发方法.Scrum提供了高度可视化的用于管理软件开发复杂性管理的敏捷项目管理的实践框架 ...

  3. oracle至mysql该指南的数据模式()任意数据源之间的跨导应用

    为了产生的一些资源的库的释放.需要API模块迁移到mysql在,需要引导数据. 试用oracle to mysql工具.当迁移错误不说,如此大量的数据的,有了这样简陋的工具是不太可靠. 意外的发现工具 ...

  4. Android 界面滑动实现---Scroller类 从源码和开发文档中学习(让你的布局动起来)

    在android学习中,动作交互是软件中重要的一部分,其中的Scroller就是提供了拖动效果的类,在网上,比如说一些Launcher实现滑屏都可以通过这个类去实现..   例子相关博文:Androi ...

  5. linux编程掌握常用命令

    1)编译应用程序 make -f makefile_5_2 clean make -f makefile_5_2 2)关于共享目录 在linux虚拟机的/mnt/hgfs下可看到该文件夹 3)cd命令 ...

  6. 【Demo 0005】Android 资源

    本章学习要点:        1.  了解Android中资源用途:        2.  掌握资源使用通用规则:        3.  掌握具体资源使用方法; 一.Android资源       a ...

  7. Material Master

    02-03 03: 物料主的定义:相同的物料应该是同一个物料号. 在PP放面我们主要关心的是工厂 . 定义公司后在公司下面在定义工厂. spro配置的时候我们可以在.后勤.物料管理.物料.创建: 后勤 ...

  8. net析构函数对垃圾回收的影响

    net析构函数对垃圾回收的影响 之前忘了说了 代码都是在Release模式下运行的,现在补充上. 这里说析构函数,其实并不准确,应该叫Finalize函数,Finalize函数形式上和c++的析构函数 ...

  9. spring mvc controller间跳转 重定向

    1. 需求背景     需求:spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示. 本来以为挺简单的一 ...

  10. STL 二分查找三兄弟(lower_bound(),upper_bound(),binary_search())

    一:起因 (1)STL中关于二分查找的函数有三个:lower_bound .upper_bound .binary_search  -- 这三个函数都运用于有序区间(当然这也是运用二分查找的前提),以 ...