【问题标题】:Autolink inside a TextView in android在android中的TextView内自动链接
【发布时间】:2012-04-20 12:35:53
【问题描述】:

如何为 textview 的某些部分提供自动链接?例如:我在 TextView 中的文字是“请点击此处打开此网页”。我只想显示“此处”文本的链接。我应该在点击文本“here”时打开该网页,而不是在 TextView 的任何地方。

【问题讨论】:

    标签: android textview autolink


    【解决方案1】:

    在 string.xml 中放入一个字符串

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string name="txtCredits">Support: <a href="http://www.stackoverflow.com">click here</a></string>
    </resources>
    

    你可以像这样在 textView 中使用它:

    <TextView
            android:layout_width="fill_parent"
            android:id="@+id/text"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:linksClickable="true"
            android:text="@string/txtCredits" />
    

    编辑

    由于某种原因,上面的代码不能正常工作。所以,也添加下面的代码,

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

    重要提示:如果您拨打setMovementMethod(),请不要忘记删除autoLink="web"

    【讨论】:

    • 根据我的测试,这实际上并没有使超链接可点击。它的样式正确(使其带有下划线为蓝色),但您实际上无法单击它。似乎唯一的方法就在这里:stackoverflow.com/a/2746708/708906
    • 在 M 上测试,没有 .setMovementMethod(),我可以看到下划线的 hiperlink 文本,没有任何操作 onClick,如果我添加 .setMovementMethod(),我当然看不到 hiperlink 文本, 没有行动....有趣的事情
    • 只需删除这 2 行,android:autoLink="web" 和 android:linksClickable="true"....就可以了。
    【解决方案2】:

    Textviews 能够显示 HTML,这可以解决您的问题。用超链接包裹你想要点击的内容:

    String html = "My link is <a href=\"http://google.com\">here</a>";
    myTextView.setText(Html.fromHtml(html));
    

    【讨论】:

    • 在这种情况下我还需要为 TextView 设置 onClickListener 吗?
    • 这是我见过的最糟糕的方法,抱歉。在 XML 中,该字符串看起来如何作为资源? LinkifyClickableSpanandroid:autoLink。选择你最喜欢的,但不要像这样使用 HTML。
    • 根据我的测试,这实际上并没有使超链接可点击。它正确地呈现它(用下划线使它变成蓝色),但你实际上不能点击它。设置 xml 属性 linksClickable="true"autoLink="true" 也无效。似乎这样做的唯一方法是:stackoverflow.com/a/2746708/708906
    【解决方案3】:

    在strings.xml中使用简单的Url:

    <string name="autolink_val">Please Click Here : http://www.google.com</string>
    

    在 Java 代码中这样写:

    <TextView android:id="@+id/linkVal"   
              android:layout_width="wrap_content" 
              android:layout_height="wrap_content" 
              android:autoLink="web" 
              android:text="@string/autolink_val1"/>`
    

    【讨论】:

    【解决方案4】:

    在strings.xml中使用HTML语法:

    <string name="test">Click &lt;a href="http://vtuhtan.info"&gt;here&lt;/a&gt;</string>
    

    将 TextView 属性设置为具有可点击链接和自动链接。

    TextView tv = findViewById(R.id.textView);
    tv.setText(Html.fromHtml(getResources().getString(R.string.test)));
    

    【讨论】:

      【解决方案5】:

      您可以使用以下代码对其进行测试:

       <TextView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="http://www.yahoo.com"
          android:autoLink="web"
          />
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-29
        • 2011-10-18
        • 1970-01-01
        • 2017-11-07
        • 1970-01-01
        • 2012-10-18
        • 1970-01-01
        相关资源
        最近更新 更多