在TextView控件中单击链接弹出Activity

深入解析report_timing:从基础参数到高级时序路径分析技巧 本文深入解析了静态时序分析(STA)中`report_timing`命令的核心用法与高级技巧。作为芯片设计的关键诊断工具,它能根据SDC约束精准定位时序路径问题。文章从基础参数过滤讲起,详细介绍了如何通过`-from`、`-through`、`-to`等选项定位关键路径,并深入讲解了`-input_pins`、`-nets`、`-transition_time`等高级选项如何揭示延迟细节,以及`-nworst`、`-slack_lesser_than`等过滤排序技巧,旨在帮助工程师高效解读时序报告,优化设计 阅读详情
 

Android开发技巧:在TextView控件中单击链接弹出Activity

 介绍了<a>标签以及TextView自动识别的特殊文本(网址、电话号、Email等),这些都可以通过单击来触发不同的动作。虽然这些单击动作已经可以满足大多数需要了,但如果读者想在单击链接时执行任意自定义的动作,那么本节的内容非看不可。

   介绍的方法重新查看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的效果。
本例的显示效果如图5.5所示。单击屏幕上的两个链接后,就会分别显示Activity1和Activity2的界面。

 

 

【板栗糖GIS】新装ArcGIS必调的12个隐藏设置——【效率翻倍指南】 本文详细介绍了新装ArcGIS后必调的12个隐藏设置,涵盖性能优化、路径管理、显示调校、工作流定制等方面,帮助用户显著提升GIS工作效率。从关闭后台地理处理到启用硬件加速,再到个性化快捷键配置,这些实用技巧能让ArcGIS运行更流畅,操作更便捷。 阅读详情

相关推荐

反制反心理特征的研究

抓牛股

m0_58032574的博客 908

android如何通过TextView实现不同的Activity的切换

这是自己写的第一篇优快云的博客,由于今年暑假(大三)才决定好自己的发展方向,java基础学的也一般,所以暑假找实习的时候一直碰壁,之后经过反思,决定重新学java,然后继续来学习android,现在自己是想做一个简单的个人信息介绍,然后用App的形式展现出来,现在第一个要解决的问题就是如何通过最下方的TextView来实现不同Activity(界面)的切换,先把这个效果实现,然后继续添加新的东西

小坏蛋-辉的博客 1313

STM32与小米CyberGear微电机的CAN通信协议深度解析

本文深度解析STM32与小米CyberGear微电机的CAN通信协议,涵盖硬件连接、CAN总线配置、通信协议解析及多电机协同控制。重点介绍了基于STM32的电机控制实践,包括运动模式、速度与位置模式设置,以及数据反馈与故障诊断,为机器人及自动化设备开发提供实用指南。

www00的博客 359

textView跳转的activity

点击textvie跳转到activity 这里使用到SpannableString类,主要用于在指定的字符串点击触发的事件(具体实现代码如下) 在manifest.xml中添加两个activtity tv1.setMovementMethod(LinkMovementMethod.getInstance()); 添加链接 <activit...

weixin_34062329的博客 317

【FPGA】Verilog代码实现温湿度传感器DHT11

#今天也是咸鱼的一天~ 因为参加Robei 杯 是要做一个机器人,先不说这个机器人具体怎么机器法,但是和外界互通的传感器肯定少不了,通过获取外界环境数据,进行处理,然后做出各种各样的功能。 先来讲个简单的模块,温湿度传感器DHT11。 DHT11介绍 DHT11是一款价格便宜,易于使用的温度湿度测量二合一传感器。它具有超小体积、极低功耗的特点。它使用单根总线与单片机进行双向的串行数据传输,信号传...

Ninquelote的博客 9162

Cy7c68013A速度测试教程

手里有一个cypress的CY7C68013A模块,一直没空玩。今天便测一下,这个模块的USB2.0速率。 1、开发工具下载 在cypress下载如下开发工具包(开发工具包下载地址) 2、驱动安装 一路Next即可 3、下载CyControl.exe 4、驱动安装 模块连接电脑,此时由于没有安装驱动,在设备管理器中显示未知设备...

LV9586的博客 5892

android textview动态设置,在Activity中动态设置TextView的属性

package yu.activity;import android.app.Activity;import android.graphics.Color;import android.os.Bundle;import android.view.Gravity;import android.view.ViewGroup.LayoutParams;import android.widget.Line...

weixin_35769289的博客 1438

LabVIEW多界面应用开发:从启动器到主界面的切换架构与实现

在图形化编程领域,模块化与界面管理是构建复杂应用程序的核心。其原理在于通过清晰的程序架构,实现不同功能模块间的独立运行与协同工作,从而提升代码的可维护性和可扩展性。这种架构的技术价值在于能够有效管理应用程序的生命周期与资源,避免内存泄漏,并确保流畅的用户体验。在测控系统、自动化测试等工程实践中,常需实现如启动界面选择语言或模式后,无缝切换至主功能界面的场景。本文聚焦于LabVIEW环境,深入探讨如何利用动态调用、状态机等机制,并结合功能全局变量(FGV)与队列消息处理器(QMH)等热词技术,构建健壮的多界面

weixin_30802819的博客 262

TextView话题##显示和点击

textview两个#号中间内容为话题,可以点击 效果图: demo下载地址:http://download.csdhttp://download.youkuaiyun.com/detail/ww96054993/9895463n.net/detail/ww96054993/9895463

ww96054993的专栏 770

BME688传感器原理图设计,已量产(环境传感器)

在便携式空气质量监测、可穿戴健康设备这类低功耗场景中,BME688 这类集成了 VOC、温湿度、气压的四合一 MEMS 传感器越来越受欢迎 —— 它体积小、功耗低,刚好匹配便携设备的需求。但这类小信号传感器对电源噪声、电平匹配的要求很细,今天结合实际项目里的一款 BME688 接口电路,聊聊硬件设计的关键细节。

不脱发的程序猿 514

在 SAP 系统中设置成本中心(Cost Center)和利润中心(Profit Center)需在管理会计(CO)模块中完成,涉及主数据创建、组织结构配置等步骤

本文详细介绍了SAP系统中成本中心和利润中心的设置流程。成本中心设置包括:配置成本控制范围、定义标准层次结构、创建主数据(KS01/KS02/KS03)等步骤。利润中心设置需先激活利润中心会计功能,再定义标准层次并创建主数据(KE01/KE02/KE03)。关键是将成本中心与利润中心关联,实现成本数据自动流向利润中心。最后可通过相关报表验证设置是否生效。整个流程强调主数据创建和组织结构关联,以实现成本归集和利润分析功能。

金牌架构师 2220

Android开发技巧:在TextView控件中单击链接弹出Activity

在5.2.1节和5.2.2节介绍了标签以及TextView自动识别的特殊文本(网址、电话号、Email等),这些都可以通过单击来触发不同的动作。虽然这些单击动作已经可以满足大多数需要了,但如果读者想在单击链接时执行任意自定义的动作,那么本节的内容非看不可。      现在让我们使用5.2.1节介绍的方法重新查看Html.java文件的内容,随便找一个处理Html标签的方法,例 如,endA方法

学习记录 1335

ThingsBoard3.9.1规则引擎方式发送钉钉通知消息

thingsboard3.9.1/4.0规则链方式发送钉钉通知消息。

hssjf的专栏 530

TextView:在TextView控件中单击链接弹出Activity

在5.2.1节和5.2.2节介绍了标签以及TextView自动识别的特殊文本(网址、电话号、Email等),这些都可以通过单击来触发不同的动作。虽然这些单击动作已经可以满足大多数需要了,但如果读者想在单击链接时执行任意自定义的动作,那么本节的内容非看不可。      现在让我们使用5.2.1节介绍的方法重新查看Html.java文件的内容,随便找一个处理Html标签的方法,例 如,endA方法

yuanlaishini2010的专栏 732

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

android 链接控件,Android开发技巧:在TextView控件中单击链接弹出Activity

现在让我们使用5.2.1节介绍的方法重新查看Html.java文件的内容,随便找一个处理Html标签的方法,例如,endA方法。该方法用于处理标签。我们会发现在该方法中如下的语句。text.setSpan(new URLSpan(h.mHref), where, len, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);其中text是SpannableStringBuild...

weixin_39608559的博客 247

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

android 的a标签,Android开发技巧之在a标签或TextView控件中单击链接弹出Activity(自定义动作)...

在5.2.1节和5.2.2节介绍了标签以及TextView自动识别的特殊文本(网址、电话号、Email等),这些都可以通过单击来触发不同的动作。虽然这些单击动作已经可以满足大多数需要了,但如果读者想在单击链接时执行任意自定义的动作,那么本节的内容非看不可。现在让我们使用5.2.1节介绍的方法重新查看Html.java文件的内容,随便找一个处理Html标签的方法,例如,endA方法。该方法用于处理标...

weixin_29664819的博客 494

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

android 抽象方法 自定义控件,Android开发技巧之在a标签或TextView控件中单击链接弹出Activity(自定义动作)...

在5.2.1节和5.2.2节介绍了标签以及TextView自动识别的特殊文本(网址、电话号、Email等),这些都可以通过单击来触发不同的动作。虽然这些单击动作已经可以满足大多数需要了,但如果读者想在单击链接时执行任意自定义的动作,那么本节的内容非看不可。现在让我们使用5.2.1节介绍的方法重新查看Html.java文件的内容,随便找一个处理Html标签的方法,例如,endA方法。该方法用于处理标...

weixin_32968105的博客 150

android a标签打电话,Android开发技巧之在a标签或TextView控件中单击链接弹出Activity(自定义动作)...

在5.2.1节和5.2.2节介绍了标签以及TextView自动识别的特殊文本(网址、电话号、Email等),这些都可以通过单击来触发不同的动作。虽然这些单击动作已经可以满足大多数需要了,但如果读者想在单击链接时执行任意自定义的动作,那么本节的内容非看不可。现在让我们使用5.2.1节介绍的方法重新查看Html.java文件的内容,随便找一个处理Html标签的方法,例如,endA方法。该方法用于处理标...

weixin_34351588的博客 230
上一篇: android最佳学习路线,学习心得
下一篇: 简单介绍一下 设计模式在android中运用
AndroidDevWjm
博客等级 码龄15年 6粉丝 17原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值