在Android中,可以使TextView中的链接可点击。
在Android中,可以使TextView中的链接可点击。
首先,我要先说我已经访问了这两个链接:
但是这两个都没有成功。
其次,我的应用程序基于一个单独的地图片段,我不知道这是否是个问题,但是TextView是显示在地图上的信息窗口的一部分。
我在xml中有以下TextView:
我想将其变成一个链接,我通过程序动态地为其提供文本,我可以看到文本本身,但是它无法点击或者没有超链接。
以下是我在活动中设置TextView的部分代码:
TextView tvLink = (TextView) v.findViewById(R.id.tv_link); // 设置链接可点击 tvLink.setClickable(true); tvLink.setMovementMethod(LinkMovementMethod.getInstance()); String text = (String) urls.get(arg0.getTitle()); // 设置链接的url tvLink.setText(Html.fromHtml(text));
我还尝试了将TextView设置为android:onClick="openBrowser"
并且有一个openBrowser类:
public void openBrowser(View view){ // 从标签中获取url String url = (String)view.getTag(); Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.addCategory(Intent.CATEGORY_BROWSABLE); // 将url传递给intent数据 intent.setData(Uri.parse(url)); startActivity(intent); }
但是它也没有起作用。我可能在尝试不同方法时搞砸了,但我尝试分开每个尝试,并且感到困惑,需要外部的意见。
编辑1:
添加了以下内容:
- 我的字符串在res文件中(在字符串数组中)
(这个链接在这里有效,所以我认为它应该是一个合法的链接)
- 根据评论要求,我整个的XML文件
问题:如何在Android中使TextView中的链接可点击?
原因:在给TextView设置文本时,没有将文本中的链接转换成可点击的SpannableString。
解决方法:
1. 将TextView的文本转换成字符串:
String str = holder.restContactInfoTV.getText().toString();
2. 使用SpannableString将字符串转换成可点击的文本:
int index = str.lastIndexOf(","); SpannableString snstr = new SpannableString(str); ClickableSpan Span = new ClickableSpan() { public void onClick(View textView) { try { String mobile = CUrrentOrderChild.getRestaurantMobileCO(); Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + mobile)); startActivity(intent); } catch (Exception e) { } } public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); } }; snstr.setSpan(Span, index + 2, snstr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
3. 将可点击的SpannableString设置回TextView:
holder.restContactInfoTV.setText(snstr);
4. 设置TextView的MovementMethod为LinkMovementMethod,使链接可点击:
holder.restContactInfoTV.setMovementMethod(LinkMovementMethod.getInstance());
问题:Android中的TextView中的链接无法点击。
原因:可能是因为URL的格式不正确。
解决方法:
1. 在XML布局文件中,移除以下属性:
android:linksClickable="true" android:autoLink="web"
2. 确保TextView的布局代码如下所示:
3. 确保字符串资源的格式如下所示:
4. 使用以下代码设置TextView的文本和使链接可点击:
String text = (String) urls.get(arg0.getTitle()); Log.i("url = ", text); tvLink.setText(Html.fromHtml(text));
以上是解决该问题的步骤,请确保按照以上方法进行操作。另外,有用户提到在地图片段的信息窗口中无法点击TextView内的链接,根据其他答案,这是不可能的。