在Android中,可以使TextView中的链接可点击。

7 浏览
0 Comments

在Android中,可以使TextView中的链接可点击。

首先,我要先说我已经访问了这两个链接:

关于这个主题的问题1关于这个主题的问题2

但是这两个都没有成功。

其次,我的应用程序基于一个单独的地图片段,我不知道这是否是个问题,但是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:

添加了以下内容:

  1. 我的字符串在res文件中(在字符串数组中)

点击这里了解更多关于此位置的信息

(这个链接在这里有效,所以我认为它应该是一个合法的链接)

  1. 根据评论要求,我整个的XML文件

    
        
        
        
    
    
    

0
0 Comments

问题:如何在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());

0
0 Comments

问题:Android中的TextView中的链接无法点击。

原因:可能是因为URL的格式不正确。

解决方法:

1. 在XML布局文件中,移除以下属性:

android:linksClickable="true"
android:autoLink="web"

2. 确保TextView的布局代码如下所示:


3. 确保字符串资源的格式如下所示:

Google

4. 使用以下代码设置TextView的文本和使链接可点击:

String text = (String) urls.get(arg0.getTitle());
Log.i("url = ", text);
tvLink.setText(Html.fromHtml(text));

以上是解决该问题的步骤,请确保按照以上方法进行操作。另外,有用户提到在地图片段的信息窗口中无法点击TextView内的链接,根据其他答案,这是不可能的。

0
0 Comments

问题出现的原因:Google Maps的InfoWindow不是一个活动视图,它是在返回时作为图像渲染的。因此,无法处理在InfoWindow布局中的单独TextView上的点击事件。

解决方法:需要使用OnInfoWindowClickListener来监听InfoWindow上的点击事件,并将整个窗口设置为链接,而不仅仅是文本。

0