From 833b7a80c5bc797fb10492fee531cfdb74a6bc67 Mon Sep 17 00:00:00 2001 From: harambasicluka <64483219+harambasicluka@users.noreply.github.com> Date: Fri, 19 Jun 2020 14:34:45 +0200 Subject: [PATCH] added clickable links to DialogHelper.kt (#646) Co-authored-by: marcmuschko <marc.muschko@sap.com> --- .../de/rki/coronawarnapp/util/DialogHelper.kt | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DialogHelper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DialogHelper.kt index 70bcbddee..7f3bdd2af 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DialogHelper.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DialogHelper.kt @@ -1,7 +1,13 @@ package de.rki.coronawarnapp.util import android.app.Activity +import android.app.Activity.RESULT_OK +import android.text.SpannableString +import android.text.method.LinkMovementMethod +import android.text.util.Linkify +import android.widget.TextView import androidx.appcompat.app.AlertDialog +import de.rki.coronawarnapp.R object DialogHelper { @@ -59,11 +65,12 @@ object DialogHelper { fun showDialog( dialogInstance: DialogInstance ): AlertDialog { + val message = getMessage(dialogInstance.activity, dialogInstance.message) val alertDialog: AlertDialog = dialogInstance.activity.let { val builder = AlertDialog.Builder(it) builder.apply { setTitle(dialogInstance.title) - setMessage(dialogInstance.message) + setView(message) setCancelable(dialogInstance.cancelable ?: true) setPositiveButton( dialogInstance.positiveButton @@ -83,4 +90,22 @@ object DialogHelper { alertDialog.show() return alertDialog } + + private fun getMessage(activity: Activity, message: String?): TextView { + // create spannable and add links + val spannable = SpannableString(message) + Linkify.addLinks(spannable, Linkify.WEB_URLS) + // get padding for all sides + val paddingStartEnd = activity.resources.getDimension(R.dimen.spacing_normal).toInt() + val paddingLeftRight = activity.resources.getDimension(R.dimen.spacing_small).toInt() + // create a textview with clickable links from the spannable + val textView = TextView(activity) + textView.text = spannable + textView.autoLinkMask = RESULT_OK + textView.movementMethod = LinkMovementMethod.getInstance() + textView.setPadding(paddingStartEnd, paddingLeftRight, paddingStartEnd, paddingLeftRight) + textView.setTextAppearance(R.style.body1) + textView.setLinkTextColor(activity.getColorStateList(R.color.button_primary)) + return textView + } } -- GitLab