- 浏览: 134361 次
- 性别:
- 来自: 北京
最新评论
-
qiuhuahui1:
真的有用,帮我节省了大把的时间。
android的ant编译打包 -
fxiaozj:
楼主,有没有demo?
Android ViewGroup实现页面滑动效果并实现不同的动画效果 -
sgjsdf5944:
你好,请问下楼主如果我想在安装完成页面上控制打开不可用该怎么实 ...
Android 监控程序安装和删除的实现 -
renfujiang:
养成好习惯,看过别人的文章 就得评论 增加点人气 好文章 我是 ...
android的ant编译打包 -
leishengwei:
你好,第一种方法在4.0时,输入法是弹不出去了,但是光标不能正 ...
Android如何关闭EditText中的软键盘
在5.2.1节和5.2.2节介绍了<a>标签以及TextView自动识别的特殊文本(网址、电话号、Email等),这些都可以通过单击来触发不同的动作。虽然这些单击动作已经可以满足大多数需要了,但如果读者想在单击链接时执行任意自定义的动作,那么本节的内容非看不可。
现在让我们使用5.2.1节介绍的方法重新查看Html.java文件的内容,随便找一个处理Html标签的方法,例
如,endA方法。该方法用于处理</a>标签。我们会发现在该方法中如下的语句。
text.setSpan(new URLSpan(h.mHref), where, len, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
其中text是SpannableStringBuilder对象,该对象即可以修改文本内容,又可以将某段文本设置成一个Span,在Android中,Span表示一段文本的效果,例如,链接形式、图像、带背景色的文本等。
上面代码中使用setSpan方法将某个区间(由where和len指定的区间)的文本设置成URLSpan效果,也就是链接显示效果。其中URLSpan表示将文本设置成链接效果,该类是ClickableSpan的子类,在android.text.style包中可以找到URLSpan和ClickableSpan类。实际上,所有的Span类都在android.text.style包中。
我们再按着查看Html.java文件内容的方法查看URLSpan.java文件的内容,会看到一个onClick方法,代码如下:
// 覆盖ClickableSpan类中的onClick方法,onClick方法在ClickableSpan类中是抽象方法
@Override
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);
}
在onClick方法中获得了<a>标签的href属性设置的URL,并调用相应的Activity来显示网页。
从onClick方法的源代码以及ClickableSpan类的名字可以得出一个结论。在5.2.1节和5.2.2节介绍的像电话、Email、网址、链接都是在ClickableSpan类的onClick方法中通过Action调用相应的Activity来显示不同的内容的。那么我们也可以采用类似的方法,也就是自己来实现onClick方法,这样就可以达到自定义单击动作的目的了。
说做就做,先准备两个TextView控件。在本例中我们使用SpannableString对象来设置Span,SpannableString和SpannableStringBuilder的区别是SpannableString不允许修改文本,只允许设置Span,而SpannableStringBuilder即允许修改文本,也允许设置Span。
下面的代码采用了隐式创建ClickableSpan对象实例的方法来设置Span,并在其中覆盖了onClick方法。
现在我们来看一下setSpan方法,该方法有4个参数。第一个参数需要设置一个ClicableSpan对象,第二个和第三个参数分别表示文本中要设置成Span的某段文本的起始位置和终止位置的下一个字符的位置,也就是start和end。最后一个参数是一个标志。在本例中设为Spanned.SPAN_EXCLUSIVE_EXCLUSIVE,该标志在TextView控件中意义不大,但在EditText控件中表示在当前Span效果的前后输入字符时并不应用Span的效果。还可以设置如下几个类似的值。
1. Spanned.SPAN_EXCLUSIVE_INCLUSIVE:在Span前面输入的字符不应用Span的效果,在后面输入的字符应用Span效果。
2. Spanned.SPAN_INCLUSIVE_EXCLUSIVE:在Span前面输入的字符应用Span的效果,在后面输入的字符不应用Span效果。
3. Spanned.SPAN_INCLUSIVE_INCLUSIVE:在Span前后输入的字符都应用Span的效果。
现在让我们使用5.2.1节介绍的方法重新查看Html.java文件的内容,随便找一个处理Html标签的方法,例
如,endA方法。该方法用于处理</a>标签。我们会发现在该方法中如下的语句。
text.setSpan(new URLSpan(h.mHref), where, len, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
其中text是SpannableStringBuilder对象,该对象即可以修改文本内容,又可以将某段文本设置成一个Span,在Android中,Span表示一段文本的效果,例如,链接形式、图像、带背景色的文本等。
上面代码中使用setSpan方法将某个区间(由where和len指定的区间)的文本设置成URLSpan效果,也就是链接显示效果。其中URLSpan表示将文本设置成链接效果,该类是ClickableSpan的子类,在android.text.style包中可以找到URLSpan和ClickableSpan类。实际上,所有的Span类都在android.text.style包中。
我们再按着查看Html.java文件内容的方法查看URLSpan.java文件的内容,会看到一个onClick方法,代码如下:
// 覆盖ClickableSpan类中的onClick方法,onClick方法在ClickableSpan类中是抽象方法
@Override
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);
}
在onClick方法中获得了<a>标签的href属性设置的URL,并调用相应的Activity来显示网页。
从onClick方法的源代码以及ClickableSpan类的名字可以得出一个结论。在5.2.1节和5.2.2节介绍的像电话、Email、网址、链接都是在ClickableSpan类的onClick方法中通过Action调用相应的Activity来显示不同的内容的。那么我们也可以采用类似的方法,也就是自己来实现onClick方法,这样就可以达到自定义单击动作的目的了。
说做就做,先准备两个TextView控件。在本例中我们使用SpannableString对象来设置Span,SpannableString和SpannableStringBuilder的区别是SpannableString不允许修改文本,只允许设置Span,而SpannableStringBuilder即允许修改文本,也允许设置Span。
下面的代码采用了隐式创建ClickableSpan对象实例的方法来设置Span,并在其中覆盖了onClick方法。
package mobile.android.ch05.link.activity; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.text.SpannableString; import android.text.Spanned; import android.text.method.LinkMovementMethod; import android.text.style.ClickableSpan; import android.view.View; import android.widget.TextView; public class Main extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView textView1 = (TextView) findViewById(R.id.textview1); TextView textView2 = (TextView) findViewById(R.id.textview2); String text1 = "显示Activity1"; String text2 = "显示Activity2"; // 将文本转换成SpannableString对象 SpannableString spannableString1 = new SpannableString(text1); SpannableString spannableString2 = new SpannableString(text2); // 将text1中的所有文本设置成ClickableSpan对象,并实现了onClick方法 spannableString1.setSpan(new ClickableSpan() { // 在onClick方法中可以编写单击链接时要执行的动作 @Override public void onClick(View widget) { Intent intent = new Intent(Main.this, Activity1.class); // 显示Activity1 startActivity(intent); } }, 0, text1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 将text2中的所有文本设置成ClickableSpan对象,并实现了onClick方法 spannableString2.setSpan(new ClickableSpan() { // 在onClick方法中可以编写单击链接时要执行的动作 @Override public void onClick(View widget) { Intent intent = new Intent(Main.this, Activity2.class); // 显示Activity2 startActivity(intent); } }, 0, text1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 使用SpannableString对象设置两个TextView控件的内容 textView1.setText(spannableString1); textView2.setText(spannableString2); // 在单击链接时凡是有要执行的动作,都必须设置MovementMethod对象 textView1.setMovementMethod(LinkMovementMethod.getInstance()); textView2.setMovementMethod(LinkMovementMethod.getInstance()); } }
现在我们来看一下setSpan方法,该方法有4个参数。第一个参数需要设置一个ClicableSpan对象,第二个和第三个参数分别表示文本中要设置成Span的某段文本的起始位置和终止位置的下一个字符的位置,也就是start和end。最后一个参数是一个标志。在本例中设为Spanned.SPAN_EXCLUSIVE_EXCLUSIVE,该标志在TextView控件中意义不大,但在EditText控件中表示在当前Span效果的前后输入字符时并不应用Span的效果。还可以设置如下几个类似的值。
1. Spanned.SPAN_EXCLUSIVE_INCLUSIVE:在Span前面输入的字符不应用Span的效果,在后面输入的字符应用Span效果。
2. Spanned.SPAN_INCLUSIVE_EXCLUSIVE:在Span前面输入的字符应用Span的效果,在后面输入的字符不应用Span效果。
3. Spanned.SPAN_INCLUSIVE_INCLUSIVE:在Span前后输入的字符都应用Span的效果。
发表评论
-
ListView与Button、imageButton 的共存问题解决
2013-02-20 11:39 1375ListView与Button、imageButton 的共存 ... -
android实现popupwindow的动画效果
2013-02-01 18:56 2048问题:在打开或者关闭popupwindow的时候怎么样显示动画 ... -
Android开发ViewPager中ListView失效问题解决方法
2013-01-28 22:12 2823最近开发一个Android小应用。就是利用ViewPager实 ... -
Android ViewGroup实现页面滑动效果并实现不同的动画效果
2012-08-28 22:24 3216这应该是自己第一次开始写博客,今天起想要记录下自己工作上学到的 ... -
关于WebView的loadData方法以及乱码问题
2012-08-09 14:37 1016WebView是Android应用开发 ... -
Android对图片的压缩读取和保存
2012-08-08 10:27 1429在开发图片浏览器等软件是,很多时候要显示图片的缩略图,而一般情 ... -
ubuntu下载android源代码
2012-07-22 00:50 2014用虚拟机来创建一个Ubun ... -
android面试(2)
2012-07-20 16:17 1151附带答案,共100分 一、选择题(30题,每题1.5分,共4 ... -
自定义PreferenceActivity——修改Preference样式、加顶部布局
2012-05-27 20:19 2757首先在res/xml文件夹下建立preferences.xml ... -
android拦截短信并屏蔽系统的Notification
2012-05-21 09:25 1880Android短信拦截,总的来说有两种方式: (一)、在代码 ... -
Android设置应用程序默认语言
2012-05-19 21:03 1607Android应用程序的国际化还是做得不错的,通过设置资源文件 ... -
(android 实战总结)android对html支持接口总结
2012-04-18 09:50 2436Android支持html 的两个接口 1 Spanned ... -
Android的TextView使用Html来处理图片显示、字体样式、超链接等
2012-04-16 11:09 1642转eoe:http://www.eoeandroid.com/ ... -
android的ant编译打包
2012-04-11 14:52 3993Android本身是支持ant打包项目的,并且SDK中自带一个 ... -
使用InputStreamEntity 边读取边上传文件
2012-04-09 17:32 7512HttpClient httpclient = new Def ... -
android xliff字符串操作
2012-04-09 14:59 1471参考:http://blog.csdn.net/freshma ... -
Android:只读EditText内容可滚动(禁止输入法)的实现
2012-04-06 12:00 1480实验设备为HTC hero (SDK 2.1-update1) ... -
Eclipse报内存溢出
2012-04-04 10:50 1156(1)在配置tomcat的JDK里面设置。Window--&g ... -
Android解压缩zip的实现
2012-03-20 11:21 2872android 解压缩zip包,需要在menifest.xml ... -
Android alertdialog的按钮点击后不消失
2012-03-15 20:35 1952使用反射: 在你的setPositiveButton中添加 ...
相关推荐
本篇文章将详细讲解如何在点击链接时触发自定义的Activity,实现这一功能的关键在于理解和利用Android的Spannable类及其子类。 首先,Android的TextView控件和HTML的a标签可以自动识别并处理一些特殊的文本格式,如...
在android中,文本控件主要包括TextView控件和EditView... 您可能感兴趣的文章:Android控件系列之TextView使用介绍Android开发技巧之在a标签或TextView控件中单击链接弹出Activity(自定义动作)Android AutoCompleteText
运行应用后,当用户点击TextView中的文本时,就会启动相应的Activity,实现了TextView单击链接弹出新Activity的功能。这个功能可以广泛应用于各种场景,比如帮助文档、设置界面等,增加应用的交互性和用户体验。 在...
在Android开发中,ListView是非常常见的一种控件,它用于展示一系列可滚动的数据项。为了增强用户体验,开发者往往需要对ListView中的项目进行定制化的样式设置,特别是当某个项目被选中时,其背景颜色的改变是非常...
本习题集旨在帮助初学者掌握Android应用开发的基础知识,包括环境搭建、编程语法、应用程序结构以及控件的使用。 1. Android的四层架构: - Linux内核层:提供操作系统基础,包括系统服务。 - 系统库层:由C/C++...
6.3 TextView单击链接弹出Activity 6.4 TextView实现跑马灯效果 6.5 EditText输入表情图像 6.6 EditText中输入特定的字符 6.7 AutoCompleteTextView完成输入 6.8 Button按钮的焦点变化 6.9 Button图文混排的按钮 ...
首先,我们需要在布局文件(如activity_main.xml)中定义一个Button和一个TextView。Button用于用户点击,TextView则用来显示当前的计数。布局文件可以这样设计: ```xml <LinearLayout xmlns:android=...
在Android开发中,GridView是一种非常常用的布局控件,它允许我们以网格的形式展示数据。在“Android 学习笔记(十三):Activity-GridView”这篇笔记中,主要讲解了如何在Activity中使用GridView以及如何自定义...
在Android开发中,UI设计是至关重要的一环,它关乎到应用程序的用户体验和视觉吸引力。以下是对Android UI设计中几个核心知识点的详细说明: 1. **Button**:按钮是用户交互的基础,可以触发特定的事件。在Java代码...
在Activity程序开发部分,书中详细讲解了Activity的基本概念和工作原理,这是Android应用的核心组件。读者将学习如何构建和管理Activity,以及如何利用基本控件如TextView、Button、EditText等来创建用户界面。此外...
在Android开发中,ListView是常用的一种控件,用于展示大量数据列表。它高效且可滚动,支持多种交互方式,如单击、长按等...记得在开发过程中,合理地组织代码,保持适配器的简洁性和可维护性,是提高代码质量的关键。
然后,两个数字相加的结果会显示在另一个TextView控件上。 5. **字符串与数字的转换**:由于用户输入的是字符串,我们需要使用Integer.parseInt()或Double.parseDouble()将字符串转换为数值类型。在计算完成后,...
要选择其他的星座时,可单击文本框右边的那个倒三角,可以弹出一个下拉菜单列表框,然后从中选择你需要查询的星座。最后,单击按钮确认,进行查询,进入下一个Activity界面。 3.2.2程序 //进行星座的选择,然后进行...
4. **Intent的作用**:Intent在Android中起到连接四大组件(Activity、Service、BroadcastReceiver、ContentProvider)的纽带作用,可以实现界面间的切换,并包含动作和动作数据,但不直接涉及数据共享或生命周期...