按上一篇的方式可以给 TextView 加上事件响应,然而仅限于 web、email、phone、map等几种,如果希望在点击后跳转到自己的 Activity 要怎么实现呢?看代码吧!
这是 Activity 代码:
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
linkify = new LinkifyUtil(this);
Intent intent = new Intent("com.example.android.note.ADD");
intent.setData(Uri.parse("content://com.example.android.note/item"));
linkify.addIntentLink(intent, (TextView) findViewById(R.id.tv_new_item));
}
这是 LinkifyUtil 类:
package com.example.android.note.util;
import android.app.Activity;
import android.content.Intent;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
/**
*
* @author eidolon
*/
public class LinkifyUtil {
private final Activity currentActivity;
public LinkifyUtil(Activity activity) {
this.currentActivity = activity;
}
public void addIntentLink(final Intent intent, final TextView view, final int start, final int end) {
CharSequence source = view.getText();
if (source instanceof Spanned) {
IntentSpan[] spans = ((Spanned) source).getSpans(start, end, IntentSpan.class);
if (spans.length > 0) {
return;
}
}
SpannableString spannableString = new SpannableString(source);
spannableString.setSpan(new IntentSpan(new OnClickListener() {
public void onClick(View view) {
currentActivity.startActivity(intent);
}
}), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
view.setText(spannableString);
view.setMovementMethod(LinkMovementMethod.getInstance());
}
public void addIntentLink(final Intent intent, final TextView view) {
addIntentLink(intent, view, 0, view.getText().toString().length());
}
}
最后是 IntentSpan 类:
package com.example.android.note.util;
import android.text.style.ClickableSpan;
import android.view.View;
import android.view.View.OnClickListener;
/**
*
* @author eidolon
*/
public class IntentSpan extends ClickableSpan {
private final OnClickListener listener;
public IntentSpan(View.OnClickListener listener) {
this.listener = listener;
}
@Override
public void onClick(View view) {
listener.onClick(view);
}
}
分享到:
相关推荐
`setMovementMethod(LinkMovementMethod.getInstance())`这一步非常重要,它使得`TextView`能够识别并响应`ClickableSpan`,否则点击事件不会生效。 总结来说,`TextView`通过`SpannableString`和`StringBuilder`的...
首先,让我们了解TextView的基本用法。TextView是Android布局中的一个视图元素,它用于显示单行或多行的文本。通过XML布局文件或代码动态创建,可以设置字体、颜色、大小等属性。要使TextView中的文本成为可点击的...
为了响应TextView的点击事件,我们需要为其设置一个OnClickListener。在Java代码中,可以通过匿名内部类的方式实现: ```java textView.setOnClickListener(new OnClickListener() { @Override public void ...
`setMovementMethod`方法使TextView能响应链接的点击事件。 当用户点击链接时,系统会解析Intent并尝试启动对应的Activity。在`AndroidManifest.xml`中,你需要为这个Intent声明一个接收者: ```xml <intent-...
在Android开发中,`TextView`是用于展示文本的常用组件,但有时我们希望部分文本具有不同的样式,比如颜色不同,甚至能响应用户的点击事件,跳转到特定的链接。这通常涉及到`SpannableString`、`ClickableSpan`等...
首先,TextView支持HTML格式的文本,这意味着我们可以使用HTML标签来格式化文本,包括插入链接。例如,如果要显示一段包含链接的文本,可以这样做: ```java String htmlText = "<a href='http://www.example.com'>...
本文详细介绍了如何使用 Intent 传递信息,实现注册界面功能,包括 Intent 传递信息、TextView 控件、Activity 之间的信息传递、布局文件的设计、Button 控件的使用、EditText 控件的使用、Intent.putExtras() 方法...
`setMovementMethod`用于使TextView可以响应点击事件。 如果你想要对多个超链接进行处理,可以使用`Html.fromHtml()`方法配合HTML标签来设置文本,然后再使用`Linkify.addLinks()`来识别和转换这些链接。例如: ``...
这里的intent-filter定义了Activity可以响应的Intent类型。在这个例子中,我们没有特别定义ACTION和CATEGORY,因为我们的Intent是在代码中明确指定目标Activity的,所以不需要这部分配置。 总之,Intent在Android...
除了控件级别的事件外,Android还支持对设备本身的事件进行响应,例如屏幕旋转、键盘弹出/隐藏等。 1. **屏幕旋转**: - 当设备方向发生变化时,系统会自动调整屏幕布局。开发者可以通过覆盖`...
在AndroidManifest.xml文件中,我们需要声明一个BroadcastReceiver,并指定ACTION_SMS_RECEIVED Intent过滤器,以便系统知道我们的应用对短信事件感兴趣。 ```xml <intent-filter android:priority="999"> </...
`Intent Filters`则是定义在组件(如Activity、Service或Broadcast Receiver)中的一种规则集合,用于匹配接收到的`Intents`,决定哪些组件可以响应特定的`Intent`。 #### 实例分析:从通讯录中选择联系人并发送...
Intent intent = new Intent(Intent.ACTION_VIEW, uri); intent.putExtra(Browser.EXTRA_APPLICATION_ID, context.getPackageName()); context.startActivity(intent); } ``` 这个方法中,URLSpan获取href属性,...
除了UI控件中的事件外,Android还支持对设备本身的事件进行响应,例如传感器数据的变化、网络连接状态的变化等。这些事件通常通过注册监听器或者使用系统服务的方式进行处理。 #### 四、屏幕间的跳转和事件的传递 ...
3. **监听事件**:添加OnClickListener监听器,当用户点击TextView时,触发相应的方法,如切换页面或更新数据。 4. **实现页面切换**:根据用户选择的选项,利用Fragment或Activity的栈管理(如FragmentManager或...
6. 应用LinkMovementMethod:调用`setMovementMethod`方法,传入`LinkMovementMethod.getInstance()`,使得TextView能够响应点击事件。 7. 显示文本:最后,将`SpannableString`对象设置为TextView的文本。 以下是...
一个基本的Widget通常包含一个或多个布局元素,如ImageView、TextView或者Button。在这个例子中,我们可能会看到一个或多个Button,因为它们是最常见的可点击元素,可以触发用户事件。 为了使Widget具有点击事件,...
8. **Broadcast Intent Filter**: 在AndroidManifest.xml中,我们需要为AppWidgetProvider添加对应的Intent Filter,以便系统能正确识别和处理Widget的点击事件。 9. **Android 广播**: 广播是Android系统中一种...
事件处理机制是Android系统用于响应用户操作的一种方式,通常涉及到事件源(Event Source)、事件监听器(Event Listener)和事件处理器(Event Handler)。 事件处理机制的基本工作原理是将事件监听器绑定到事件源,当...