【问题标题】:Html <a> tag not working in Android textviewHtml <a> 标签在 Android 文本视图中不起作用
【发布时间】:2023-04-10 23:27:01
【问题描述】:

我正在尝试在文本视图(位于列表视图中)中显示 JSON 结果。结果之一是必须显示为“查看结果”的 URL。我正在使用以下代码将 URL 显示为“查看结果”:

        String result = "<a href=\"" + jsonObject.get("url") + "\">" + getString(R.string.hyperlink_text) + "</a>" + "\n";
        bbieResults.put("Result", Html.fromHtml(result));

相关的xml布局:

<TextView
    android:id="@+id/list_result"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/list_label"
    android:layout_marginLeft="10dp"
    android:autoLink="web"
    android:linksClickable="true"
    android:textSize="25dp" />

此文本视图确实将“查看结果”显示为 URL 的标签,但我实际上无法单击它。那么我怎样才能使它成为一个可点击的超链接呢?

提前致谢:)

【问题讨论】:

    标签: java android android-layout android-listview textview


    【解决方案1】:
    textview.setMovementMethod(LinkMovementMethod.getInstance());
    textview.setText(Html.fromHtml(str));
    

    【讨论】:

    • 谢谢,我已经在另一个活动中对此进行了测试,这确实是我想要的。但是在这种特殊情况下,它会导致空指针异常。文本视图位于列表视图使用的自定义 row.xml 中。你能指出我如何解决这个问题的正确方向吗?
    【解决方案2】:
    android:autoLink="web"
    android:linksClickable="true"
    

    当文本视图位于 .xml 文件和列表视图中时,这对我有用。

    【讨论】:

      【解决方案3】:

      您的解决方案就在这里。 https://github.com/saket/Better-Link-Movement-Method

      在 Gradle 文件中:

          implementation 'me.saket:better-link-movement-method:1.1'
      

      在 Kotlin 文件中:

      message?.message?.let {
        chatMessageTextView.setText(
           HtmlCompat.fromHtml(
               it.trim(),
               HtmlCompat.FROM_HTML_MODE_LEGACY
           ),
           TextView.BufferType.SPANNABLE
         )
      }
          
      chatMessageTextView.movementMethod =
          BetterLinkMovementMethod.newInstance().apply {
              setOnLinkClickListener { _, url ->
                  // Handle click or return false to let the framework handle this link.
                   handleMessageLink(itemView.context,url)
                   true
              }
          }
      

      在布局文件中:

                   <TextView
                          android:id="@+id/chat_message_text_view"
                          android:layout_width="wrap_content"
                          android:layout_height="wrap_content"
                          android:layout_below="@+id/files_layout"
                          android:layout_marginStart="@dimen/space_ultra_small"
                          android:text="@string/text_small"
                          android:textColor="@color/black"
                          android:padding="@dimen/space_ultra_small"
                          android:textColorLink="@color/sky_blue"
                          android:textSize="@dimen/text_size_large" />
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-04
        • 1970-01-01
        • 1970-01-01
        • 2017-05-19
        • 1970-01-01
        • 2020-10-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多