Skip to content

Commit cea0878

Browse files
committed
OnboardingFragment: use CustomTabs for privacy policy
1 parent 2b4c082 commit cea0878

2 files changed

Lines changed: 36 additions & 2 deletions

File tree

app/src/main/java/net/vonforst/evmap/fragment/OnboardingFragment.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,17 @@ import android.annotation.SuppressLint
66
import android.content.Context
77
import android.graphics.drawable.AnimatedVectorDrawable
88
import android.os.Bundle
9+
import android.text.SpannableString
10+
import android.text.SpannableStringBuilder
11+
import android.text.style.URLSpan
912
import android.view.LayoutInflater
1013
import android.view.View
1114
import android.view.ViewGroup
1215
import android.view.animation.DecelerateInterpolator
1316
import android.widget.ImageView
1417
import androidx.core.content.ContextCompat
1518
import androidx.core.text.HtmlCompat
19+
import androidx.core.text.getSpans
1620
import androidx.core.text.method.LinkMovementMethodCompat
1721
import androidx.fragment.app.Fragment
1822
import androidx.navigation.fragment.findNavController
@@ -27,6 +31,8 @@ import net.vonforst.evmap.databinding.FragmentOnboardingWelcomeBinding
2731
import net.vonforst.evmap.model.FILTERS_DISABLED
2832
import net.vonforst.evmap.navigation.safeNavigate
2933
import net.vonforst.evmap.storage.PreferenceDataSource
34+
import net.vonforst.evmap.ui.CustomUrlSpan
35+
import net.vonforst.evmap.ui.replaceUrlSpansWithCustom
3036
import net.vonforst.evmap.waitForLayout
3137

3238
class OnboardingFragment : Fragment() {
@@ -237,13 +243,14 @@ class DataSourceSelectFragment : OnboardingPageFragment() {
237243
}
238244

239245
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
240-
binding.cbAcceptPrivacy.text =
246+
val text =
241247
HtmlCompat.fromHtml(
242248
getString(
243249
R.string.accept_privacy,
244250
getString(R.string.privacy_link)
245251
), HtmlCompat.FROM_HTML_MODE_LEGACY
246-
)
252+
).replaceUrlSpansWithCustom()
253+
binding.cbAcceptPrivacy.text = text
247254
binding.cbAcceptPrivacy.linksClickable = true
248255
binding.cbAcceptPrivacy.movementMethod = LinkMovementMethodCompat.getInstance()
249256
binding.btnGetStarted.visibility = View.INVISIBLE
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package net.vonforst.evmap.ui
2+
3+
import android.text.SpannableStringBuilder
4+
import android.text.Spanned
5+
import android.text.style.URLSpan
6+
import android.view.View
7+
import androidx.core.text.getSpans
8+
import net.vonforst.evmap.MapsActivity
9+
10+
class CustomUrlSpan(url: String): URLSpan(url) {
11+
override fun onClick(widget: View) {
12+
(widget.context as? MapsActivity)?.let {
13+
it.openUrl(url, widget.rootView)
14+
} ?: {
15+
super.onClick(widget)
16+
}
17+
}
18+
}
19+
20+
fun Spanned.replaceUrlSpansWithCustom(): Spanned {
21+
val builder = SpannableStringBuilder(this)
22+
builder.getSpans<URLSpan>().forEach {
23+
builder.setSpan(CustomUrlSpan(it.url), builder.getSpanStart(it), builder.getSpanEnd(it), builder.getSpanFlags(it))
24+
builder.removeSpan(it)
25+
}
26+
return builder
27+
}

0 commit comments

Comments
 (0)