所以我试图添加这样的功能,当您点击电话号码时,它会带您到预先填充号码的拨号器应用程序。我有以下代码:
mContactDetailsText.setText(phonetextBuilder.toString());
Pattern pattern = Pattern.compile("[0-9]+\\s+[0-9]+");
Linkify.addLinks(mContactDetailsText, pattern, "tel:");
和Text目前是“T. 0123 4567890”
目前的结果是只有上面的字符串,而不是可点击的。我甚至尝试添加以下行,但没有运气:
mContactDetailsText.setAutoLinkMask(0);
任何人都有任何想法或者能看出我做错了什么?
由于
答案 0 :(得分:9)
自动链接掩码需要包含搜索电话号码:
mContactDetailsText.setAutoLinkMask(Linkify.PHONE_NUMBERS);
然后,您需要将链接设置为可点击:
mContactDetailsText.setLinksClickable(true);
您可能还需要设置移动方法:
mContactDetailsText.setMovementMethod(LinkMovementMethod.getInstance())
答案 1 :(得分:3)
您应该能够通过其他答案完成您想要的任务, 但这肯定会有效,并且可以让您更好地控制文本的显示以及单击数字时会发生什么。
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());
答案 2 :(得分:0)
您需要在TextView上设置onClickListener()
。然后他们会回复点击。