如何在Android的webview中像这样显示链接?

7
有没有办法像这样在webview中显示URL?
但是我得到的结果是这样的,没有焦点和点击选项不起作用,请给我一些建议。
此代码使用webview显示数据。
 webview.getSettings().setJavaScriptEnabled(true);
 webview.loadDataWithBaseURL(null, string, "text/html", "utf-8", null);

在Webview中显示的文本是字符串格式吗? - PrincessLeiha
5个回答

11
使用Linkify
Spannable sp = new SpannableString(Html.fromHtml(string));
Linkify.addLinks(sp, Linkify.ALL);
final String html = "<body>" + Html.toHtml(sp) + "</body>";
webView.loadData(html, "text/html", "utf-8");

在该字符串值中,我有图像URL,在该URL中,Webview中的图像未显示... - NagarjunaReddy
一个 WebView 只会显示 HTML 内容。仅有图片 URL 是无法显示图片的。你需要构建一个带有 img 标签的 HTML。然而,这并不是你最初的问题。 - Rajesh
我已经在HTML格式中设置了图像URL,将该HTML字符串传递给SpannableString(string),其中参数字符串是HTML字符串,在此之外,除了图像URL以外的所有内容都可以正常工作。 - NagarjunaReddy
如果您使用此方法,在嵌入不在列表中的内容时,它将删除所有该标签。 - shadow
忽略Linkifya href="https://testurl_09u7ymNi01bNpDXfY1A?e=rBZ2N8\" target="_blank">。 - RobinHood

7

字符串 str="在这里输入您的文本... https://dev59.com/FG3Xa4cB1Zd3GeqPisqp";

(注:该段文字为代码示例,不做翻译)
ArrayList<String> myArray = new ArrayList<String>();

myArray.add( "<!DOCTYPE HTML><!-- created HTML PAGE -->");
myArray.add("<head> ");
myArray.add("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"  width=100%>");
myArray.add("<meta name=\"viewport\" content=\"width=device-width\">");
myArray.add("<style>");
myArray.add("   p { font-family:Arial, Helvetica, sans-serif;}");
myArray.add("</style>");
myArray.add("</head> ");
myArray.add("<body style=\"background-color: transparent; margin-left:5%; margin-right:5%; \">");

myArray.add("<div >");
Spannable sp = new SpannableString(str);
Linkify.addLinks(sp, Linkify.ALL);
str = Html.toHtml(sp) ;
myArray.add(str);

String myFullString = myArray.toString().replace("[", "").replace("]", "").replace(",", "\n").replace("&lt;", "<").replace("&gt;", ">");

mWebView.loadDataWithBaseURL("about:blank", myFullString ,"text/html", "utf-8", null);

@NagarjunaReddy.P 我在 中写了链接,这样你就可以复制完全相同的代码,然后自己检查代码是否有效... - PrincessLeiha
你尝试用你的数据替换 str 变量的内容了吗? - PrincessLeiha
让我们在聊天中继续这个讨论。点击此处进入聊天室 - NagarjunaReddy
如果使用此方法,当您嵌入不在列表中的内容时,它将删除所有该标签。 - shadow

1
请在您的TextView中添加android:autoLink="web"。
 <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tv_text"
        android:autoLink="web"  
        android:textColorLink="@color/link"
        android:text="click here to load www.fb.com"
        android:textColor="@color/black" />

1

示例代码:

Java:

 TextView t2 = (TextView) findViewById(R.id.text2);
 t2.setMovementMethod(LinkMovementMethod.getInstance());

安卓:

<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/yourid"
android:id="@+id/yourid"
android:layout_below="@+id/yourid" android:layout_centerInParent="true"
android:layout_marginTop="20dp"></TextView>

Android WebView:更改自动链接显示 用于webview


我在我的回答中添加了链接。 - Rachel Gallen

1

试试这个:

  String header = "< ?xml version=\"1.0\" encoding=\"UTF-8\" ?>";
  String data = "< html>< body>< a href='tel:555-5599'>508-776-5510
  " "< /body>< /html>";
  mWebView.loadData(header+data,  "text/html", "UTF-8");

如果您正在将一串HTML文本加载到webView中,则可以使用以下方法:
mWebView.loadData(header+data,  "text/html", "UTF-8");

如果您有一个HTML文件,则可以使用以下方法:
webView.loadUrl("file:///android_asset/mypage.html"):

请注意:不要忘记将您的HTML文件放在资产文件夹中。
干杯!!! :D

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接