【发布时间】:2018-05-17 00:44:15
【问题描述】:
我的应用中有一个文本视图,文本会定期更新,文本可以是简单的字符串,也可以是超链接。为了识别它是一个超链接,我在我的文本视图中添加了android:autoLink="web"。
单击文本视图时,会打开一个对话框片段。该功能适用于简单的字符串,但是当涉及到超链接时,浏览器会自动打开。如何强制超链接只打开对话框片段而不是浏览器?
【问题讨论】:
我的应用中有一个文本视图,文本会定期更新,文本可以是简单的字符串,也可以是超链接。为了识别它是一个超链接,我在我的文本视图中添加了android:autoLink="web"。
单击文本视图时,会打开一个对话框片段。该功能适用于简单的字符串,但是当涉及到超链接时,浏览器会自动打开。如何强制超链接只打开对话框片段而不是浏览器?
【问题讨论】:
我就是这样做的:
SpannableString ss = new SpannableString(getString(R.string.my_string));
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View textView) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.link)));
startActivity(browserIntent);
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
};
ss.setSpan(clickableSpan, START_INDEX, LENGTH, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
terms.setText(ss);
terms.setMovementMethod(LinkMovementMethod.getInstance());
terms.setHighlightColor(Color.TRANSPARENT);
更新:
假设您的字符串是:“某事 LINK 另一件事”,并且您只希望 LINK 部分有下划线并在您单击它时打开浏览器。那么您的my_string 将是something Link another thing。
然后我们创建一个ClickableSpan,您只能将部分文本设置为可点击...然后您将其设置为setSpan.....START_INDEX 和 LENGTH 是您的第一个索引您希望可点击的文本,第二个是该可点击区域的长度。
【讨论】: