这是示例HTML字符串,
<span class=\"proflinkWrapper\"><span class=\"proflinkPrefix\">+<\/span><a class=\"proflink\" href=\"https://plus.google.com/114461178896543099856\" oid=\"114461178896543099856\">Elon Musk<\/a><\/span> hey
使用HTML.fromHtml,我明白了,
+Elon Musk hey
在单击+ Elon Musk时,它将带我到浏览器,但我需要相应的URL并在我的应用程序中使用它,给我带来建议的人! (我不需要跨度,因为内容是非常动态的并且是HTML格式)
是否可以拦截Html.fromHtml并获取URL,并使其无法在浏览器中打开,并根据需要在我的应用程序中使用它?
答案 0 :(得分:0)
我们可能只是这样获得href
值:
String ht = "<span class=\"proflinkWrapper\"><span class=\"proflinkPrefix\">+</span><a class=\"proflink\" href=\"https://plus.google.com/114461178896543099856\" oid=\"114461178896543099856\">Elon Musk</a></span> hey";
int hrefIndex = ht.indexOf("href=");
if (hrefIndex >= 0) {
int startIndex = hrefIndex + "href=".length();
int endIndex = ht.indexOf('"', hrefIndex + "href=".length() + 1);
if (startIndex > 0 && endIndex > 0) {
String href = ht.substring(startIndex, endIndex);
}
}
答案 1 :(得分:0)
我通过修改LinkMovementMethod找到了解决方法
public function makeActive(Request $request, $id)
{
$category = Category::findOrFail($id);
if($request->has('active'))
{
$category->active = 1;
}else{
$category->active = 0;
}
$category->save();
}
您可以通过修改代码来添加自己的侦听器,目前,我已经为URL点击添加了一个侦听器。您可以通过添加以下行在代码中使用它:
import android.text.Spannable
import android.text.style.URLSpan
import android.view.MotionEvent
import android.widget.TextView
class MyLinkMovementMethod(var onUrlClickListener: (String) -> Unit) : android.text.method.LinkMovementMethod() {
override fun onTouchEvent(widget: TextView, buffer: Spannable, event: MotionEvent): Boolean {
val action = event.action
if (action == MotionEvent.ACTION_UP) {
var x = event.x.toInt()
var y = event.y.toInt()
x -= widget.totalPaddingLeft
y -= widget.totalPaddingTop
x += widget.scrollX
y += widget.scrollY
val layout = widget.layout
val line = layout.getLineForVertical(y)
val off = layout.getOffsetForHorizontal(line, x.toFloat())
val link = buffer.getSpans(off, off, URLSpan::class.java)
if (link.isNotEmpty()) {
val url = link[0].url
if (url.contains("https") or url.contains("tel") or url.contains("mailto") or url.contains("http") or url.contains("https") or url.contains("www")) {
onUrlClickListener(url)
}
return true
}
}
return super.onTouchEvent(widget, buffer, event)
}
}
代码在科特林。