我有一个textView和文本,如
“这是带有 KeyWord 的简单文字,链接可供浏览”
在上面的文字中我想制作..
点击链接即可打开该网址 和 点击该KeyWord在我的应用程序中打开一个新的活动
也 甚至还有整个TextView的点击事件。
请帮我找一个解决方案。 谢谢, MKJParekh
答案 0 :(得分:21)
您可以做的是创建自定义ClickableSpan
,如下所示
class MyCustomSpannable extends ClickableSpan
{
String Url;
public MyCustomSpannable(String Url) {
this.Url = Url;
}
@Override
public void updateDrawState(TextPaint ds) {
// Customize your Text Look if required
ds.setColor(Color.YELLOW);
ds.setFakeBoldText(true);
ds.setStrikeThruText(true);
ds.setTypeface(Typeface.SERIF);
ds.setUnderlineText(true);
ds.setShadowLayer(10, 1, 1, Color.WHITE);
ds.setTextSize(15);
}
@Override
public void onClick(View widget) {
}
public String getUrl() {
return Url;
}
}
使用其onClick()
打开活动或网址。我正在添加一个用于在WebView
中加载网址的演示。
String text = "http://www.google.co.in/";
SpannableStringBuilder stringBuilder = new SpannableStringBuilder(text);
MyCustomSpannable customSpannable = new MyCustomSpannable(
"http://www.google.co.in/"){
@Override
public void onClick(View widget) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(customSpannable.getUrl()));
startActivity(intent);
}
};
stringBuilder.setSpan(customSpannable, 0, text.length(),
Spannable.SPAN_INCLUSIVE_INCLUSIVE);
textView.setText( stringBuilder, BufferType.SPANNABLE );
textView.setMovementMethod(LinkMovementMethod.getInstance());
答案 1 :(得分:12)
按以下方式生成TextView:
TextView t3 = (TextView) findViewById(R.id.text3);
t3.setText(Html.fromHtml("This is the Simple Text with
<a href=\'http://www.google.com\'>Keyword</a> and the
<a href='startActivityFromLink://some_info'>Link</a> to browse"));
t3.setMovementMethod(LinkMovementMethod.getInstance());
以下列方式指定您的活动:
<activity android:name=".TestActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<data android:scheme="startActivityFromLink" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
我认为它应该有效。可能需要一些调整。我没有时间去测试它。如果有效,请告诉我。
答案 2 :(得分:5)
我使用了This Question
中回答的相同内容为此,我使用了这个LinkEnabledTextView,这对我来说很容易完成任务。
答案 3 :(得分:-2)
将关键字和链接转换为不同的TextView。
然后在执行此操作后设置TextView.onClickListener()。
这是最简单的方法,也是更多逻辑方式。