这控件的作用就是 显示文本用的 占用界面的一块地方 显示不需要编辑的内容

       显示普通文本的话  直接在界面的配置文件里  

   

        android:id="@+id/myfirstTextview"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginTop="17dp"        android:text="百度" />
    直接在属性里加上 android:text="xxx"即可

   

    要想显示html的话   只能使用 charSequense  因为 你在配置文件里面写 android:text="百度"  就会因为解析不了xml文件而出错

    

protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);TextView  textView=(TextView)this.findViewById(R.id.myfirstTextview);CharSequence cSequence=Html.fromHtml("百度");textView.setText(cSequence); }
里面要注意的是  要用 this.findViewById找到控件  必须要先 setContentView(R.layout.视图id)

setContentView方法应该是从配置文件弄出来一个类的实例来了  并组成当前视图

才真正的实例化 布局文件里(layout)配置的各个控件

就是你每次 setContentView 都相当于实例化某一个布局文件 并显示在当前设备窗体里

而且布局文件中各个控件的显示的东东会重新初始化为配置文件里写的状态

textView.setText(cSequence);
setContentView(R.layout.activity_main);

这样的话 测试时会发现 设备里显示的还是 百度  俩字 而不是 带链接的百度

html.fromhtml 返回的是个 spaned类型对象  spaned类型对象 是继承了 charsequense接口的    

而在 textview.settext(charsequense cs)方法的源码里  会判断  cs是否是 spaned类型的对象 

spaned类型 在文档中说 这个类型是包含标记对象的   

另外还有spannableString   也是 包含标记对象的  

感觉textbox更像是一个容器   内部内容的渲染 都是以实现spanned和spannable接口对象本身为基础的 

 可能android控件对象大多是如此吧

与画面绘图最接近应该是drawable接口的对象 

 Spannable.SPAN_EXCLUSIVE_EXCLUSIVE  表示文本前后的内容不应用spannablestring.setspan所用的样式

 

span的英文意思 就是一个区块,一个区域,屏幕上显示含有可视化因素对象的区块

另外 有几个方法 值得注意 

getSpans方法 getSpans(start, end, type)   比如  textview里面的内容为 x y

可以这样获取 

getSpans(0,spannable.length,URLspan.class);返回的是URLSspan[]

对 里面的某个URLSpan操作的话 比如url

getSpanStart(url)返回的就是  此链接内容在整个spannable对象里字符串描述符的起始位置  

getSpanEnd(url)返回的就是   链接内容的 getSpans(start, end, type) 结束位置

 然后使用 setSpan(myURLSpan, sp.getSpanStart(url), sp.getSpanEnd(url), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);

对于html标记文本的链接 能正确的显示  但是没什么作用   不能点击 

要加一句  setMovementMethod(LinkMovementMethod.getInstance());

为啥 要加这么一句 点击链接才会跳转到浏览器内部呢 ?

依照我的理解  spannablestring 含有格式化的对象(类似 嵌入式 文档 ole)只是在显示在ui有作用 

但是行为  依然要依靠这句 setMovementMethod(LinkMovementMethod.getInstance());

 链接区块 为 UrlSpan Urlspan实现了 clickablespan抽象类的onclick

当你点击 一个url的时候 会调用 linkmovementmethod的 onkeydown方法 此方法调用 clickablespan子类的onclick方法   此处是urlspan的onclick方法 

urlspan的 onclick方法 源码如下 

   public void onClick(View widget) {        Uri uri = Uri.parse(getURL());        Context context = widget.getContext();        Intent intent = new Intent(Intent.ACTION_VIEW, uri);        intent.putExtra(Browser.EXTRA_APPLICATION_ID, context.getPackageName());        context.startActivity(intent);    }

源码中可看到启动浏览器 并传递给浏览器进程url参数  

setMovementMethod(LinkMovementMethod.getInstance());

就是对事件(点击 )和处理方法 进行关联

更多相关文章

  1. Android ListView动画实现方法
  2. ADB连接Android设备的三种方法
  3. [Android设计模式]Android退出应用程序终极方法
  4. Android通过Alpha实现渐变效果的几个方法
  5. Android学习之五:android一些基本控件
  6. Android中AVD(Android Virtual Device)不能启动的处理方法
  7. Android多个Activity切换时其生命周期中的方法执行顺序

随机推荐

  1. android 音频系统java部分代码阅读
  2. 从NDK在非Root手机上的调试原理探讨Andro
  3. Android(安卓)2.2 API demo
  4. Android— Eclipse运行Emulator时提示权
  5. Android(安卓)Java和JavaScript代码相互
  6. android中使用Intent在activity之间传递
  7. Android(安卓)WebView与Javascript交互
  8. android 模拟器中启用相机API支持
  9. android 开发谷歌地图的步骤
  10. android 5.0新特性学习--CardView