【发布时间】:2022-01-07 00:36:04
【问题描述】:
我正在用 Java 开发一个应用程序,targetSdkVersion 设置为 30。我有一个活动,我需要向用户显示一个可点击的 URL,其形式为 click me,其中隐藏了长 URL支持 HTML。
我挣扎了一段时间。目前我的代码如下所示
if (station.getSponsorUrl().length() > 32) {
stationSponsorUrl.setClickable(true);
stationSponsorUrl.setMovementMethod(LinkMovementMethod.getInstance());
stationSponsorUrl.setText(Html.fromHtml("<a href=\"" + station.getSponsorUrl() +"\">" + getString(R.string.www_link) + "</a>\n", HtmlCompat.FROM_HTML_MODE_LEGACY));
}
else {
stationSponsorUrl.setText(station.getSponsorUrl());
}
当我删除对setMovementMethod 的调用时,URL 会正确呈现(字体颜色),但根本无法点击。当我让setMovementMethod 处于活动状态时,它甚至不会显示为 URL。我看到R.string.www_link 定义的文本格式不变。当然也不行。
else 案例工作正常,当我使用纯 HTML 链接设置电视内容时,它开箱即用。电视在 XML 布局中定义如下
<TextView
android:id="@+id/textViewSponsorUrl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:autoLink="all"
android:fontFamily="@font/alegreya_sans_sc_medium"
android:linksClickable="true"
android:text="TextView"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
【问题讨论】: