Android - 仅启用 URL link,但在触及 TextView 中的某些内容时禁用其他 non-URL link
Android - Enabling only URL link, but disabling the others when it touches something non-URL link in TextView
我正在实施一个董事会。我想要用户可以包含 links.
的视图
现在,我的 TextView 有
android:autoLink="web"
属性。但是,它的工作方式与我的预期有点不同。
如您所见,即使我单击空白区域(图片中的+行),TextView 也会检测到 link(蓝色突出显示),如果我松开手指,网络浏览器打开并转到 URL.
那不是我想要的。我只希望它在我只单击 link 时工作。 (不是其他 non-URL 文字,也不是空白区域)
和
我不知道用户写了什么,换句话说,我不能预设具体的 links 也不能猜测 URLs 会是什么。它必须应用于所有 link,即使我不知道。
link的个数可以超过一个。而且我不知道用户的内容会包含多少link
有人告诉我需要使用 WebView 才能达到 HTML
。那么,我真的只有那个选择吗?因为我不认为Kakaotalk、Whatsapp、Wechat、Telegram,甚至Instagram等很多聊天室都是WebView做的。
如果我想把图片放在文字中间怎么办?我想用 TextView 是不可能的。怎么做到的?
您需要以编程方式处理链接。这样您就可以将可点击的范围和不可点击的范围分开。如果需要,您可以在单击 span 时添加更多代码。
以下是您可以使用的方式
private void createUrlSpansInTextView(TextView tv, String text) {
tv.setText(text); // Or you can remove this line if you already set text to textview
SpannableString current=(SpannableString)tv.getText();
URLSpan[] spans=
current.getSpans(0, current.length(), URLSpan.class);
for (URLSpan span : spans) {
int start=current.getSpanStart(span);
int end=current.getSpanEnd(span);
current.removeSpan(span);
current.setSpan(new CustomURLSpan(span.getURL()), start, end,
0);
}
}
其中 CustomURLSpan
是
private static class CustomURLSpan extends URLSpan {
public CustomURLSpan(String url) {
super(url);
}
@Override
public void onClick(View widget) {
// Write your code to load urls
}
}
What if I want to place pictures in the middle of text? I guess it is
impossible with TextView. How to make it?
不可以使用 TextView。您需要寻找第三方库。我不确定是否存在。
我正在实施一个董事会。我想要用户可以包含 links.
的视图现在,我的 TextView 有
android:autoLink="web"
属性。但是,它的工作方式与我的预期有点不同。
如您所见,即使我单击空白区域(图片中的+行),TextView 也会检测到 link(蓝色突出显示),如果我松开手指,网络浏览器打开并转到 URL.
那不是我想要的。我只希望它在我只单击 link 时工作。 (不是其他 non-URL 文字,也不是空白区域)
和
我不知道用户写了什么,换句话说,我不能预设具体的 links 也不能猜测 URLs 会是什么。它必须应用于所有 link,即使我不知道。
link的个数可以超过一个。而且我不知道用户的内容会包含多少link
有人告诉我需要使用 WebView 才能达到 HTML
。那么,我真的只有那个选择吗?因为我不认为Kakaotalk、Whatsapp、Wechat、Telegram,甚至Instagram等很多聊天室都是WebView做的。
如果我想把图片放在文字中间怎么办?我想用 TextView 是不可能的。怎么做到的?
您需要以编程方式处理链接。这样您就可以将可点击的范围和不可点击的范围分开。如果需要,您可以在单击 span 时添加更多代码。
以下是您可以使用的方式
private void createUrlSpansInTextView(TextView tv, String text) {
tv.setText(text); // Or you can remove this line if you already set text to textview
SpannableString current=(SpannableString)tv.getText();
URLSpan[] spans=
current.getSpans(0, current.length(), URLSpan.class);
for (URLSpan span : spans) {
int start=current.getSpanStart(span);
int end=current.getSpanEnd(span);
current.removeSpan(span);
current.setSpan(new CustomURLSpan(span.getURL()), start, end,
0);
}
}
其中 CustomURLSpan
是
private static class CustomURLSpan extends URLSpan {
public CustomURLSpan(String url) {
super(url);
}
@Override
public void onClick(View widget) {
// Write your code to load urls
}
}
What if I want to place pictures in the middle of text? I guess it is impossible with TextView. How to make it?
不可以使用 TextView。您需要寻找第三方库。我不确定是否存在。