Android Linkify - 可点击的电话号码
Android Linkify - Clickable telephone numbers
所以我正在尝试添加这样的功能,当您单击 phone 号码时,它会将您带到带有预填充号码的拨号器应用程序。我有以下代码:
mContactDetailsText.setText(phonetextBuilder.toString());
Pattern pattern = Pattern.compile("[0-9]+\s+[0-9]+");
Linkify.addLinks(mContactDetailsText, pattern, "tel:");
并且文本当前是 "T. 0123 4567890"
目前的结果就是上面的字符串无法点击。我什至尝试添加以下行,但没有成功:
mContactDetailsText.setAutoLinkMask(0);
任何人有任何想法或可以看到我做错了什么?
谢谢
您需要在 TextView 上设置 onClickListener()
。然后他们会响应点击。
自动链接掩码需要包含对 phone 个号码的搜索:
mContactDetailsText.setAutoLinkMask(Linkify.PHONE_NUMBERS);
然后您需要将链接设置为可点击:
mContactDetailsText.setLinksClickable(true);
您可能还需要像这样设置移动方式:
mContactDetailsText.setMovementMethod(LinkMovementMethod.getInstance())
你应该可以用其他答案完成你想要的,
但这肯定会起作用,并且会让您更好地控制文本的显示以及单击数字时会发生什么。
String text = "T. ";
StringBuilder stringBuilder = new StringBuilder(text);
int phoneSpanStart = stringBuilder.length();
String phoneNumber = "0123 4567890"
stringBuilder.append(phoneNumber);
int phoneSpanEnd = stringBuilder.length();
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View textView) {
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:" + phoneNumber.replace(" ", "")));
startActivity(intent);
}
public void updateDrawState(TextPaint ds) {// override updateDrawState
ds.setUnderlineText(false); // set to false to remove underline
ds.setColor(Color.BLUE);
}
};
SpannableString spannableString = new SpannableString(stringBuilder);
spannableString.setSpan(clickableSpan, phoneSpanStart, phoneSpanEnd,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
myTextView.setText(spannableString);
myTextView.setMovementMethod(LinkMovementMethod.getInstance());
所以我正在尝试添加这样的功能,当您单击 phone 号码时,它会将您带到带有预填充号码的拨号器应用程序。我有以下代码:
mContactDetailsText.setText(phonetextBuilder.toString());
Pattern pattern = Pattern.compile("[0-9]+\s+[0-9]+");
Linkify.addLinks(mContactDetailsText, pattern, "tel:");
并且文本当前是 "T. 0123 4567890"
目前的结果就是上面的字符串无法点击。我什至尝试添加以下行,但没有成功:
mContactDetailsText.setAutoLinkMask(0);
任何人有任何想法或可以看到我做错了什么?
谢谢
您需要在 TextView 上设置 onClickListener()
。然后他们会响应点击。
自动链接掩码需要包含对 phone 个号码的搜索:
mContactDetailsText.setAutoLinkMask(Linkify.PHONE_NUMBERS);
然后您需要将链接设置为可点击:
mContactDetailsText.setLinksClickable(true);
您可能还需要像这样设置移动方式:
mContactDetailsText.setMovementMethod(LinkMovementMethod.getInstance())
你应该可以用其他答案完成你想要的, 但这肯定会起作用,并且会让您更好地控制文本的显示以及单击数字时会发生什么。
String text = "T. ";
StringBuilder stringBuilder = new StringBuilder(text);
int phoneSpanStart = stringBuilder.length();
String phoneNumber = "0123 4567890"
stringBuilder.append(phoneNumber);
int phoneSpanEnd = stringBuilder.length();
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View textView) {
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:" + phoneNumber.replace(" ", "")));
startActivity(intent);
}
public void updateDrawState(TextPaint ds) {// override updateDrawState
ds.setUnderlineText(false); // set to false to remove underline
ds.setColor(Color.BLUE);
}
};
SpannableString spannableString = new SpannableString(stringBuilder);
spannableString.setSpan(clickableSpan, phoneSpanStart, phoneSpanEnd,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
myTextView.setText(spannableString);
myTextView.setMovementMethod(LinkMovementMethod.getInstance());