Как сделать кликабельную ссылку с косой чертой на андроиде Textview - PullRequest
0 голосов
/ 06 ноября 2019

Я использую setMovementMethod, чтобы сделать кликабельный URL-адрес в TextView. Лучше посмотрите следующий код:

1. String value = "By signing up, you agree to our <a href=\"https://app.mywebsite.com/terms\">My App Term</a> and confirm that you have read our <a href=\"https://app.mywebsite.com/privacypolicy\">Privacy Policy</a>";

2. TextView text = (TextView) findViewById(R.id.text);

3. text.setText(Html.fromHtml(value));

4. text.setMovementMethod(LinkMovementMethod.getInstance());

Проблема связана с косой чертой сразу после ".com" URL. Если я удаляю эту косую черту и пишу URL-адрес вот так https://app.mywebsite.com, тогда он отлично работает, но когда я пишу URL-адрес вот так https://app.mywebsite.com/terms, тогда ссылка не кликабельна. Я вижу выделенную ссылку, но при нажатии на ссылку она не работает

Как я могу решить эту проблему? Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019

Создайте функцию, похожую на:

fun applyHtmlToTextView(tv: TextView?, html: String) {
    if (tv == null)
        return

    tv.movementMethod = LinkMovementMethod.getInstance()

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        tv.text = Html.fromHtml(html, Html.FROM_HTML_MODE_COMPACT)
    } else {
        tv.text = Html.fromHtml(html)
    }
}

Добавьте вашу строку в файл string.xml, как показано ниже:

<string name="lb_your_string"><![CDATA[<a href="https://google.com”>Google.</a>]]></string>

И используйте ее, добавив код:

applyHtmlToTextView(tv, getString(R.string.lb_your_string))

ИЛИ вы можете отредактировать переменную value следующим образом:

String value = "By signing up, you agree to our <a href=https://app.mywebsite.com/terms>My App Term</a> and confirm that you have read our <a href=https://app.mywebsite.com/privacypolicy>Privacy Policy</a>"

Удалено \"

0 голосов
/ 06 ноября 2019

Во-первых,

String value = "By signing up, you agree to our <a href="https://app.mywebsite.com/terms">My App Term</a> and confirm that you have read our <a href="https://app.mywebsite.com/privacypolicy">Privacy Policy</a>";

недопустимо, потому что - вам не разрешено использовать двойную кавычку, т. Е. "Внутри другой двойной кавычки.

Итак, правильная форма должна быть:

String value = "By signing up, you agree to our <a href='https://app.mywebsite.com/terms'>My App Term</a> and confirm that you have read our <a href='https://app.mywebsite.com/privacypolicy'>Privacy Policy</a>";

Когда я сделаю это изменение, я смогу щелкнуть ссылку, иначе код даже не скомпилируется.

Во-вторых, проверьте версию сборки и используйтедвухпараметрическая версия Html.fromHtml(string, int)

Более подробная информация о ней здесь :

...