From daabd5381d593be8be631b27fa511d4db74b725b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rom=C3=A1n?= Date: Fri, 22 May 2020 09:04:29 +0200 Subject: [PATCH] Links in help and about are clickable. Also added scroll in about activity. Fixes #232. --- .../dennisguse/opentracks/AboutActivity.java | 4 + .../dennisguse/opentracks/HelpActivity.java | 13 ++ .../dennisguse/opentracks/util/ViewUtils.java | 30 ++++ src/main/res/layout/about.xml | 143 ++++++++++-------- 4 files changed, 125 insertions(+), 65 deletions(-) create mode 100644 src/main/java/de/dennisguse/opentracks/util/ViewUtils.java diff --git a/src/main/java/de/dennisguse/opentracks/AboutActivity.java b/src/main/java/de/dennisguse/opentracks/AboutActivity.java index eb4386da3..0d447ed86 100644 --- a/src/main/java/de/dennisguse/opentracks/AboutActivity.java +++ b/src/main/java/de/dennisguse/opentracks/AboutActivity.java @@ -2,11 +2,13 @@ package de.dennisguse.opentracks; import android.os.Bundle; import android.view.Menu; +import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.Nullable; import de.dennisguse.opentracks.util.SystemUtils; +import de.dennisguse.opentracks.util.ViewUtils; public class AboutActivity extends AbstractActivity { @@ -27,6 +29,8 @@ public class AboutActivity extends AbstractActivity { TextView textURL = findViewById(R.id.about_app_url); textURL.setText(getString(R.string.about_url, getString(R.string.app_web_url))); + + ViewUtils.makeClickableLinks((ViewGroup) findViewById(android.R.id.content)); } protected int getLayoutResId() { diff --git a/src/main/java/de/dennisguse/opentracks/HelpActivity.java b/src/main/java/de/dennisguse/opentracks/HelpActivity.java index 034c101c0..59e1d66cc 100644 --- a/src/main/java/de/dennisguse/opentracks/HelpActivity.java +++ b/src/main/java/de/dennisguse/opentracks/HelpActivity.java @@ -1,7 +1,20 @@ package de.dennisguse.opentracks; +import android.os.Bundle; +import android.view.ViewGroup; + +import androidx.annotation.Nullable; + +import de.dennisguse.opentracks.util.ViewUtils; + public class HelpActivity extends AbstractActivity { + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + ViewUtils.makeClickableLinks((ViewGroup) findViewById(android.R.id.content)); + } + @Override protected int getLayoutResId() { return R.layout.help; diff --git a/src/main/java/de/dennisguse/opentracks/util/ViewUtils.java b/src/main/java/de/dennisguse/opentracks/util/ViewUtils.java new file mode 100644 index 000000000..76ff8f343 --- /dev/null +++ b/src/main/java/de/dennisguse/opentracks/util/ViewUtils.java @@ -0,0 +1,30 @@ +package de.dennisguse.opentracks.util; + +import android.text.method.LinkMovementMethod; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +public class ViewUtils { + + private ViewUtils() { + } + + /** + * Traverses all childs of {@link View} recursively and makes links within {@link TextView}s clickable. + */ + public static void makeClickableLinks(ViewGroup view) { + if (view == null) { + return; + } + + for (int i = 0; i < view.getChildCount(); i++) { + final View child = view.getChildAt(i); + if (child instanceof ViewGroup) { + makeClickableLinks((ViewGroup) child); + } else if (child instanceof TextView) { + ((TextView) child).setMovementMethod(LinkMovementMethod.getInstance()); + } + } + } +} diff --git a/src/main/res/layout/about.xml b/src/main/res/layout/about.xml index 9006a8986..ae4f43365 100644 --- a/src/main/res/layout/about.xml +++ b/src/main/res/layout/about.xml @@ -6,82 +6,95 @@ - + android:layout_height="wrap_content"> - + - + - + - + - + - + - + - + - + - + - + + + + + + + + \ No newline at end of file