我有TextView
,其中包含文字,链接和emailID
,如ScreenShot
所示:
我想实现它,以便当用户点击链接时,它应该打开浏览器并且EmailId打开SendMail。
我无法打开浏览器并发送电子邮件,但我想仅针对特定click
实现text
功能,即Link
和EmailID
TextView
,而不是整个TextView
。
这可能吗?
答案 0 :(得分:3)
您应该使用内置的linkify。阅读本教程,易于理解:
Linkify text link url in TextView text Android example
这些帖子也可以帮助您Android Linkify text - Spannable Text in Single Text View - As like Twitter tweet
和Android: ClickableSpan in clickable TextView
以下是使用Spannable的完整代码:
final String webAddress = "www.123456.org";
final String emailAddress = "info@123456.com";
TextView text = (TextView)findViewById(R.id.textview);
Spannable span = Spannable.Factory.getInstance().newSpannable("For more details on the app visit us at " + webAddress + " or write to us at " + emailAddress);
ClickableSpan webClickSpan = new ClickableSpan() {
@Override
public void onClick(View v) {
Uri uriUrl = Uri.parse("http://" + webAddress);
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);
startActivity(launchBrowser);
} };
ClickableSpan emailClickSpan = new ClickableSpan() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("message/rfc822");
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{emailAddress});
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
intent.putExtra(Intent.EXTRA_TEXT, "email body.");
startActivity(Intent.createChooser(intent, "Send Email"));
} };
span.setSpan(webClickSpan, 40, 40 + webAddress.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
span.setSpan(emailClickSpan, 73, span.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
text.setText(span);
text.setMovementMethod(LinkMovementMethod.getInstance());
答案 1 :(得分:2)
可以通过Spannable
对象实现。 Spannable
允许您为文本的一部分添加标记,并且还可以附加 ClickableSpan
,当您按下跨度时会触发。
答案 2 :(得分:2)
使用Class Linkify:
Linkify.addLinks(yourTextView, Linkify.ALL);
或仅针对网址:
Linkify.addLinks(yourTextView, Linkify.WEB_URLS);