这控件的作用就是 显示文本用的 占用界面的一块地方 显示不需要编辑的内容
显示普通文本的话 直接在界面的配置文件里
要想显示html的话 只能使用 charSequense 因为 你在配置文件里面写 android:text="百度" 就会因为解析不了xml文件而出错 setContentView方法应该是从配置文件弄出来一个类的实例来了 并组成当前视图 才真正的实例化 布局文件里(layout)配置的各个控件 就是你每次 setContentView 都相当于实例化某一个布局文件 并显示在当前设备窗体里 而且布局文件中各个控件的显示的东东会重新初始化为配置文件里写的状态 这样的话 测试时会发现 设备里显示的还是 百度 俩字 而不是 带链接的百度 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方法 源码如下 setMovementMethod(LinkMovementMethod.getInstance()); 就是对事件(点击 )和处理方法 进行关联
直接在属性里加上 android:text="xxx"即可
android:id="@+id/myfirstTextview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="17dp"
android:text="百度" />
里面要注意的是 要用 this.findViewById找到控件 必须要先 setContentView(R.layout.视图id)
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);
}
textView.setText(cSequence);
setContentView(R.layout.activity_main);
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参数