Android Kotlin - 使 TextView 中的链接可点击

问题描述 投票:0回答:3

在 strings.xml 中我有关键字

by_continuing_you_agree_terms_and_policy

绳子

By continuing, you agree our Terms of Service and <a href="https://www.google.com">Privacy Policy</a>

这是文本视图:

<TextView
    android:id="@+id/createAccountTermsText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:paddingTop="8dp"
    android:text="@string/by_continuing_you_agree_terms_and_policy"
    android:textColor="#A1A1A1" />

但是当我点击它时什么也没有发生。

基于我添加的其他问题中的“解决方案”

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

也不起作用,所以我添加了:

binding.createAccountTermsText.movementMethod = LinkMovementMethod.getInstance()

也不起作用!

这不是我第一次看到 Android SDK 的愚蠢行为。 Android 似乎是一个非常可怕的应用程序开发软件,时期

android xml kotlin
3个回答
1
投票
    android:autoLink="web"

使文本中类似

http://www.google.com
的内容可点击。不是
<a href="https://www.google.com">Privacy Policy</a>

如果你想在代码中使用“a href”

val html=getString(R.string.linked_string)
textview.movementMethod=LinkMovementMethod.getInstance()
textview.text=Html.fromHtml(html, Html.FROM_HTML_MODE_COMPACT)

在 string.xml 中将

<
替换为
&lt;

别忘了关闭

android:autoLink="web"


1
投票

好吧,这是完整的解决方案:

    val text = getString(R.string.by_continuing_you_agree_terms_and_policy)
    val ss = SpannableString(text)

    val clickTerms: ClickableSpan = object : ClickableSpan() {
        override fun onClick(widget: View) {
            Log.d(tagg, "terms clicked")
            binding.createAccountTermsText.clearFocus()
        }
    }

    val clickPrivacy: ClickableSpan = object : ClickableSpan() {
        override fun onClick(widget: View) {
            Log.d(tagg, "privacy clicked")
            binding.createAccountTermsText.clearFocus()
        }
    }
    
    val hintColorOne = ForegroundColorSpan(Color.parseColor("#FF0000"))
    val hintColorTwo = ForegroundColorSpan(Color.parseColor("#FF0000"))

    ss.setSpan(hintColorOne, 29, 45, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
    ss.setSpan(hintColorTwo, 50, 64, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)

    ss.setSpan(clickTerms, 29, 45, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
    ss.setSpan(clickPrivacy, 50, 64, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)

    binding.createAccountTermsText.text = ss
    binding.createAccountTermsText.movementMethod = LinkMovementMethod.getInstance()

整数代表第一个/最后一个字符,这意味着颜色和点击区域位于它们之间。

注 1:对两个跨度使用hintColorOne 和hintColorTwo 而不是像hintColorOne 是必要的,因为对两个跨度仅使用一个只会使第二个跨度起作用。开发带有所有这些惊喜的 Android 应用程序真是太幸福了!

注 2:使用 clickableSpan 将禁用定义的颜色并使用 XML 中定义的

android:textColorLink="#FF0000"
代替


0
投票

如果您正在寻找 Insta AP APK,它通常指的是 Instagram 应用程序的修改版本,通常提供官方应用程序中没有的额外功能。但是,下载和使用修改后的 APK 可能会带来风险:

安全风险:修改后的APK未经官方应用商店验证,因此可能包含恶意软件或间谍软件。 隐私问题:由于这些应用程序不是官方的,它们可能会滥用或泄露您的个人数据。 帐户禁令:Instagram 可能会限制或禁止使用其应用程序修改版本的帐户。

© www.soinside.com 2019 - 2024. All rights reserved.