Skip to content

Commit 98a73a6

Browse files
Material Design Teamhunterstich
authored andcommitted
[TopAppBar][A11y] Improve keyboard navigation in TopAppBar catalog demos
The NestedScrollView in the Top App Bar demos would incorrectly receive keyboard focus. While this allowed for keyboard scrolling, the scroll container itself is not an interactive element and shouldn't be a focus stop. This change fixes the issue by making the content within the scroll view focusable. The text content has been split into multiple, clickable TextViews. This makes the TextViews interactive elements, allowing them to correctly receive keyboard focus and improving the accessibility of the demos. The logic for this has been extracted into a DemoUtils.setupClickableContentText method and applied across the relevant Top App Bar and Side Sheet demos. PiperOrigin-RevId: 804881130
1 parent 4852ebc commit 98a73a6

18 files changed

+128
-82
lines changed

catalog/java/io/material/catalog/fab/res/layout/cat_extended_fab_behavior_fragment.xml

Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -14,49 +14,53 @@
1414
See the License for the specific language governing permissions and
1515
limitations under the License.
1616
-->
17-
<androidx.coordinatorlayout.widget.CoordinatorLayout
18-
xmlns:android="http://schemas.android.com/apk/res/android"
19-
xmlns:app="http://schemas.android.com/apk/res-auto"
20-
android:layout_width="match_parent"
21-
android:layout_height="match_parent">
17+
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
18+
xmlns:app="http://schemas.android.com/apk/res-auto"
19+
android:layout_width="match_parent"
20+
android:layout_height="match_parent">
2221
<com.google.android.material.appbar.AppBarLayout
23-
android:id="@+id/app_bar"
24-
android:layout_width="match_parent"
25-
android:layout_height="wrap_content"
26-
android:fitsSystemWindows="true">
22+
android:id="@+id/app_bar"
23+
android:layout_width="match_parent"
24+
android:layout_height="wrap_content"
25+
android:fitsSystemWindows="true">
2726

2827
<com.google.android.material.appbar.CollapsingToolbarLayout
29-
style="?attr/collapsingToolbarLayoutLargeStyle"
30-
android:layout_width="match_parent"
31-
android:layout_height="?attr/collapsingToolbarLayoutLargeSize"
32-
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap">
28+
style="?attr/collapsingToolbarLayoutLargeStyle"
29+
android:layout_width="match_parent"
30+
android:layout_height="?attr/collapsingToolbarLayoutLargeSize"
31+
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap">
3332

3433
<androidx.appcompat.widget.Toolbar
35-
android:id="@+id/toolbar"
36-
style="?attr/catalogToolbarWithCloseButtonStyle"
37-
android:layout_width="match_parent"
38-
android:layout_height="?attr/actionBarSize"
39-
app:layout_collapseMode="pin"
40-
app:title="Collapsing Title" />
34+
android:id="@+id/toolbar"
35+
style="?attr/catalogToolbarWithCloseButtonStyle"
36+
android:layout_width="match_parent"
37+
android:layout_height="?attr/actionBarSize"
38+
app:layout_collapseMode="pin"
39+
app:title="Collapsing Title" />
4140
</com.google.android.material.appbar.CollapsingToolbarLayout>
4241
</com.google.android.material.appbar.AppBarLayout>
4342

4443
<androidx.core.widget.NestedScrollView
45-
android:layout_width="match_parent"
46-
android:layout_height="match_parent"
47-
app:layout_behavior="@string/appbar_scrolling_view_behavior">
44+
android:layout_width="match_parent"
45+
android:layout_height="match_parent"
46+
app:layout_behavior="@string/appbar_scrolling_view_behavior">
4847

49-
<include layout="@layout/cat_topappbar_filler_text_view" />
48+
<TextView
49+
android:layout_width="wrap_content"
50+
android:layout_height="wrap_content"
51+
android:padding="16dp"
52+
android:lineSpacingMultiplier="1.2"
53+
android:text="@string/cat_fab_lorem_ipsum" />
5054
</androidx.core.widget.NestedScrollView>
5155

5256
<com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
53-
android:layout_width="wrap_content"
54-
android:layout_height="wrap_content"
55-
android:layout_margin="8dp"
56-
android:contentDescription="@string/cat_extended_fab_content_desc"
57-
android:text="@string/extended_fab_label"
58-
app:icon="@drawable/ic_add_24px"
59-
app:layout_anchor="@id/app_bar"
60-
app:layout_anchorGravity="bottom|right|end" />
57+
android:layout_width="wrap_content"
58+
android:layout_height="wrap_content"
59+
android:layout_margin="8dp"
60+
android:contentDescription="@string/cat_extended_fab_content_desc"
61+
android:text="@string/extended_fab_label"
62+
app:icon="@drawable/ic_add_24px"
63+
app:layout_anchor="@id/app_bar"
64+
app:layout_anchorGravity="bottom|right|end" />
6165

6266
</androidx.coordinatorlayout.widget.CoordinatorLayout>

catalog/java/io/material/catalog/fab/res/values/strings.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,14 @@
2626
<string name="extended_fab_label" translatable="false">Extended FAB</string>
2727
<string name="cat_extended_fab_content_desc" translatable="false">Extended FAB</string>
2828

29+
<string name="cat_fab_lorem_ipsum" translatable="false">
30+
\t\tLorem ipsum dolor sit amet, consectetur adipiscing elit. Nam in scelerisque sem. Mauris volutpat, dolor id interdum ullamcorper, risus dolor egestas lectus, sit amet mattis purus dui nec risus. Maecenas non sodales nisi, vel dictum dolor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse blandit eleifend diam, vel rutrum tellus vulputate quis. Aliquam eget libero aliquet, imperdiet nisl a, ornare ex. Sed rhoncus est ut libero porta lobortis. Fusce in dictum tellus.
31+
\n\n\t\tSuspendisse interdum ornare ante. Aliquam nec cursus lorem. Morbi id magna felis. Vivamus egestas, est a condimentum egestas, turpis nisl iaculis ipsum, in dictum tellus dolor sed neque. Morbi tellus erat, dapibus ut sem a, iaculis tincidunt dui. Interdum et malesuada fames ac ante ipsum primis in faucibus. Curabitur et eros porttitor, ultricies urna vitae, molestie nibh. Phasellus at commodo eros, non aliquet metus. Sed maximus nisl nec dolor bibendum, vel congue leo egestas.
32+
\n\n\t\tSed interdum tortor nibh, in sagittis risus mollis quis. Curabitur mi odio, condimentum sit amet auctor at, mollis non turpis. Nullam pretium libero vestibulum, finibus orci vel, molestie quam. Fusce blandit tincidunt nulla, quis sollicitudin libero facilisis et. Integer interdum nunc ligula, et fermentum metus hendrerit id. Vestibulum lectus felis, dictum at lacinia sit amet, tristique id quam. Cras eu consequat dui. Suspendisse sodales nunc ligula, in lobortis sem porta sed. Integer id ultrices magna, in luctus elit. Sed a pellentesque est.
33+
\n\n\t\tAenean nunc velit, lacinia sed dolor sed, ultrices viverra nulla. Etiam a venenatis nibh. Morbi laoreet, tortor sed facilisis varius, nibh orci rhoncus nulla, id elementum leo dui non lorem. Nam mollis ipsum quis auctor varius. Quisque elementum eu libero sed commodo. In eros nisl, imperdiet vel imperdiet et, scelerisque a mauris. Pellentesque varius ex nunc, quis imperdiet eros placerat ac. Duis finibus orci et est auctor tincidunt. Sed non viverra ipsum. Nunc quis augue egestas, cursus lorem at, molestie sem. Morbi a consectetur ipsum, a placerat diam. Etiam vulputate dignissim convallis. Integer faucibus mauris sit amet finibus convallis.
34+
\n\n\t\tPhasellus in aliquet mi. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In volutpat arcu ut felis sagittis, in finibus massa gravida. Pellentesque id tellus orci. Integer dictum, lorem sed efficitur ullamcorper, libero justo consectetur ipsum, in mollis nisl ex sed nisl. Donec maximus ullamcorper sodales. Praesent bibendum rhoncus tellus nec feugiat. In a ornare nulla. Donec rhoncus libero vel nunc consequat, quis tincidunt nisl eleifend. Cras bibendum enim a justo luctus vestibulum. Fusce dictum libero quis erat maximus, vitae volutpat diam dignissim.
35+
</string>
36+
2937
<string name="hide_fabs_label" translatable="false">Hide FABs</string>
3038
<string name="show_fabs_label" translatable="false">Show FABs</string>
3139
<string name="rotate_fabs_label" translatable="false">Rotate FABs</string>

catalog/java/io/material/catalog/feature/DemoUtils.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,17 @@
1616

1717
package io.material.catalog.feature;
1818

19+
import io.material.catalog.R;
20+
1921
import android.app.Activity;
2022
import android.content.Context;
2123
import android.view.MenuItem;
2224
import android.view.View;
2325
import android.view.View.OnLayoutChangeListener;
2426
import android.view.ViewGroup;
2527
import android.widget.ScrollView;
28+
import android.widget.Toast;
29+
import androidx.annotation.NonNull;
2630
import androidx.core.view.ViewCompat;
2731
import androidx.core.widget.NestedScrollView;
2832
import com.google.android.material.internal.ContextUtils;
@@ -63,6 +67,28 @@ public static boolean showSnackbar(Activity activity, MenuItem menuItem) {
6367
return true;
6468
}
6569

70+
public static void setupClickableContentText(@NonNull View view) {
71+
int[] textIds = {
72+
R.id.cat_demo_content_text_1,
73+
R.id.cat_demo_content_text_2,
74+
R.id.cat_demo_content_text_3,
75+
R.id.cat_demo_content_text_4,
76+
R.id.cat_demo_content_text_5
77+
};
78+
for (int id : textIds) {
79+
View textView = view.findViewById(id);
80+
if (textView != null) {
81+
textView.setOnClickListener(
82+
v ->
83+
Toast.makeText(
84+
view.getContext(),
85+
R.string.cat_demo_content_text_was_clicked,
86+
Toast.LENGTH_SHORT)
87+
.show());
88+
}
89+
}
90+
}
91+
6692
public static void addBottomSpaceInsetsIfNeeded(
6793
ViewGroup scrollableViewAncestor, ViewGroup demoContainer) {
6894
List<? extends ViewGroup> scrollViews =

catalog/java/io/material/catalog/feature/res/layout/cat_demo_content_text.xml

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,23 +23,34 @@
2323
android:layout_width="wrap_content"
2424
android:layout_height="wrap_content"
2525
android:layout_marginTop="24dp"
26+
android:lineSpacingMultiplier="1.2"
2627
android:text="@string/cat_demo_content_text_part_1" />
2728
<TextView
2829
android:id="@+id/cat_demo_content_text_2"
2930
android:layout_width="wrap_content"
3031
android:layout_height="wrap_content"
31-
android:layout_marginTop="8dp"
32+
android:layout_marginTop="16dp"
33+
android:lineSpacingMultiplier="1.2"
3234
android:text="@string/cat_demo_content_text_part_2" />
3335
<TextView
3436
android:id="@+id/cat_demo_content_text_3"
3537
android:layout_width="wrap_content"
3638
android:layout_height="wrap_content"
37-
android:layout_marginTop="8dp"
39+
android:layout_marginTop="16dp"
40+
android:lineSpacingMultiplier="1.2"
3841
android:text="@string/cat_demo_content_text_part_3" />
3942
<TextView
4043
android:id="@+id/cat_demo_content_text_4"
4144
android:layout_width="wrap_content"
4245
android:layout_height="wrap_content"
43-
android:layout_marginTop="8dp"
46+
android:layout_marginTop="16dp"
47+
android:lineSpacingMultiplier="1.2"
4448
android:text="@string/cat_demo_content_text_part_4" />
49+
<TextView
50+
android:id="@+id/cat_demo_content_text_5"
51+
android:layout_width="wrap_content"
52+
android:layout_height="wrap_content"
53+
android:layout_marginTop="16dp"
54+
android:lineSpacingMultiplier="1.2"
55+
android:text="@string/cat_demo_content_text_part_5" />
4556
</merge>

catalog/java/io/material/catalog/feature/res/values/strings.xml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,19 @@
2323
<string name="cat_demo_landing_favorite">Favorite</string>
2424
<string name="cat_demo_memory_usage" translatable="false">used: <xliff:g example="1MB" id="numerator">%1$s</xliff:g> / <xliff:g example="10MB" id="denominator">%2$s</xliff:g> (<xliff:g example="10" id="percentage">%3$d</xliff:g>%%)</string>
2525
<string name="cat_demo_content_text_part_1" translatable="false">
26-
\tLorem ipsum dolor sit amet, consectetur adipiscing elit. Nam in scelerisque sem. Mauris volutpat, dolor id interdum ullamcorper, risus dolor egestas lectus, sit amet mattis purus dui nec risus. Maecenas non sodales nisi, vel dictum dolor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse blandit eleifend diam, vel rutrum tellus vulputate quis. Aliquam eget libero aliquet, imperdiet nisl a, ornare ex. Sed rhoncus est ut libero porta lobortis. Fusce in dictum tellus.
26+
\t\tLorem ipsum dolor sit amet, consectetur adipiscing elit. Nam in scelerisque sem. Mauris volutpat, dolor id interdum ullamcorper, risus dolor egestas lectus, sit amet mattis purus dui nec risus. Maecenas non sodales nisi, vel dictum dolor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse blandit eleifend diam, vel rutrum tellus vulputate quis. Aliquam eget libero aliquet, imperdiet nisl a, ornare ex. Sed rhoncus est ut libero porta lobortis. Fusce in dictum tellus.
2727
</string>
2828
<string name="cat_demo_content_text_part_2" translatable="false">
29-
\tSuspendisse interdum ornare ante. Aliquam nec cursus lorem. Morbi id magna felis. Vivamus egestas, est a condimentum egestas, turpis nisl iaculis ipsum, in dictum tellus dolor sed neque. Morbi tellus erat, dapibus ut sem a, iaculis tincidunt dui. Interdum et malesuada fames ac ante ipsum primis in faucibus. Curabitur et eros porttitor, ultricies urna vitae, molestie nibh. Phasellus at commodo eros, non aliquet metus. Sed maximus nisl nec dolor bibendum, vel congue leo egestas.
29+
\t\tSuspendisse interdum ornare ante. Aliquam nec cursus lorem. Morbi id magna felis. Vivamus egestas, est a condimentum egestas, turpis nisl iaculis ipsum, in dictum tellus dolor sed neque. Morbi tellus erat, dapibus ut sem a, iaculis tincidunt dui. Interdum et malesuada fames ac ante ipsum primis in faucibus. Curabitur et eros porttitor, ultricies urna vitae, molestie nibh. Phasellus at commodo eros, non aliquet metus. Sed maximus nisl nec dolor bibendum, vel congue leo egestas.
3030
</string>
3131
<string name="cat_demo_content_text_part_3" translatable="false">
32-
\tAenean nunc velit, lacinia sed dolor sed, ultrices viverra nulla. Etiam a venenatis nibh. Morbi laoreet, tortor sed facilisis varius, nibh orci rhoncus nulla, id elementum leo dui non lorem. Nam mollis ipsum quis auctor varius. Quisque elementum eu libero sed commodo. In eros nisl, imperdiet vel imperdiet et, scelerisque a mauris. Pellentesque varius ex nunc, quis imperdiet eros placerat ac. Duis finibus orci et est auctor tincidunt. Sed non viverra ipsum. Nunc quis augue egestas, cursus lorem at, molestie sem. Morbi a consectetur ipsum, a placerat diam. Etiam vulputate dignissim convallis. Integer faucibus mauris sit amet finibus convallis.
32+
\t\tSed interdum tortor nibh, in sagittis risus mollis quis. Curabitur mi odio, condimentum sit amet auctor at, mollis non turpis. Nullam pretium libero vestibulum, finibus orci vel, molestie quam. Fusce blandit tincidunt nulla, quis sollicitudin libero facilisis et. Integer interdum nunc ligula, et fermentum metus hendrerit id. Vestibulum lectus felis, dictum at lacinia sit amet, tristique id quam. Cras eu consequat dui. Suspendisse sodales nunc ligula, in lobortis sem porta sed. Integer id ultrices magna, in luctus elit. Sed a pellentesque est.
3333
</string>
3434
<string name="cat_demo_content_text_part_4" translatable="false">
35-
\tPhasellus in aliquet mi. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In volutpat arcu ut felis sagittis, in finibus massa gravida. Pellentesque id tellus orci. Integer dictum, lorem sed efficitur ullamcorper, libero justo consectetur ipsum, in mollis nisl ex sed nisl. Donec maximus ullamcorper sodales. Praesent bibendum rhoncus tellus nec feugiat. In a ornare nulla. Donec rhoncus libero vel nunc consequat, quis tincidunt nisl eleifend. Cras bibendum enim a justo luctus vestibulum. Fusce dictum libero quis erat maximus, vitae volutpat diam dignissim.
35+
\t\tAenean nunc velit, lacinia sed dolor sed, ultrices viverra nulla. Etiam a venenatis nibh. Morbi laoreet, tortor sed facilisis varius, nibh orci rhoncus nulla, id elementum leo dui non lorem. Nam mollis ipsum quis auctor varius. Quisque elementum eu libero sed commodo. In eros nisl, imperdiet vel imperdiet et, scelerisque a mauris. Pellentesque varius ex nunc, quis imperdiet eros placerat ac. Duis finibus orci et est auctor tincidunt. Sed non viverra ipsum. Nunc quis augue egestas, cursus lorem at, molestie sem. Morbi a consectetur ipsum, a placerat diam. Etiam vulputate dignissim convallis. Integer faucibus mauris sit amet finibus convallis.
36+
</string>
37+
<string name="cat_demo_content_text_part_5" translatable="false">
38+
\t\tPhasellus in aliquet mi. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In volutpat arcu ut felis sagittis, in finibus massa gravida. Pellentesque id tellus orci. Integer dictum, lorem sed efficitur ullamcorper, libero justo consectetur ipsum, in mollis nisl ex sed nisl. Donec maximus ullamcorper sodales. Praesent bibendum rhoncus tellus nec feugiat. In a ornare nulla. Donec rhoncus libero vel nunc consequat, quis tincidunt nisl eleifend. Cras bibendum enim a justo luctus vestibulum. Fusce dictum libero quis erat maximus, vitae volutpat diam dignissim.
3639
</string>
3740
<string name="cat_demo_content_text_was_clicked" translatable="false">Content text was clicked</string>
3841
</resources>

catalog/java/io/material/catalog/sidesheet/SideSheetMainDemoFragment.java

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
import android.view.Window;
3535
import android.widget.Button;
3636
import android.widget.TextView;
37-
import android.widget.Toast;
3837
import androidx.activity.BackEventCompat;
3938
import androidx.activity.OnBackPressedCallback;
4039
import androidx.annotation.GravityInt;
@@ -53,6 +52,7 @@
5352
import com.google.android.material.sidesheet.SideSheetCallback;
5453
import com.google.android.material.sidesheet.SideSheetDialog;
5554
import io.material.catalog.feature.DemoFragment;
55+
import io.material.catalog.feature.DemoUtils;
5656
import io.material.catalog.preferences.CatalogPreferencesHelper;
5757
import io.material.catalog.windowpreferences.WindowPreferencesManager;
5858
import java.util.ArrayList;
@@ -245,12 +245,7 @@ private View setUpSideSheet(
245245

246246
setupBackHandling(sideSheet, sideSheetBehavior);
247247

248-
setupClickableContentText(
249-
sideSheet,
250-
R.id.cat_demo_content_text_1,
251-
R.id.cat_demo_content_text_2,
252-
R.id.cat_demo_content_text_3,
253-
R.id.cat_demo_content_text_4);
248+
DemoUtils.setupClickableContentText(sideSheet);
254249

255250
sideSheetViews.add(sideSheet);
256251

@@ -466,19 +461,4 @@ public void handleOnBackCancelled() {
466461
}
467462
};
468463
}
469-
470-
private void setupClickableContentText(@NonNull View view, @IdRes int... textIds) {
471-
for (int id : textIds) {
472-
View textView = view.findViewById(id);
473-
if (textView != null) {
474-
textView.setOnClickListener(
475-
v ->
476-
Toast.makeText(
477-
view.getContext(),
478-
R.string.cat_demo_content_text_was_clicked,
479-
Toast.LENGTH_SHORT)
480-
.show());
481-
}
482-
}
483-
}
484464
}

catalog/java/io/material/catalog/topappbar/BaseTopAppBarCollapsingDemoFragment.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import androidx.annotation.NonNull;
3131
import androidx.annotation.Nullable;
3232
import io.material.catalog.feature.DemoFragment;
33+
import io.material.catalog.feature.DemoUtils;
3334

3435
/** A base fragment that displays a collapsing Top App Bar demo for the Catalog app. */
3536
public abstract class BaseTopAppBarCollapsingDemoFragment extends DemoFragment {
@@ -53,6 +54,8 @@ public View onCreateDemoView(
5354
AppCompatActivity activity = (AppCompatActivity) getActivity();
5455
activity.setSupportActionBar(toolbar);
5556

57+
DemoUtils.setupClickableContentText(view);
58+
5659
return view;
5760
}
5861

catalog/java/io/material/catalog/topappbar/TopAppBarCollapsingFilledActionDemoFragment.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import androidx.annotation.Nullable;
3030
import com.google.android.material.snackbar.Snackbar;
3131
import io.material.catalog.feature.DemoFragment;
32+
import io.material.catalog.feature.DemoUtils;
3233

3334
/**
3435
* A fragment that displays a medium Collapsing Toolbar Top App Bar with a filled action button demo
@@ -54,6 +55,8 @@ public View onCreateDemoView(
5455
actionButton.setOnClickListener(
5556
v -> Snackbar.make(v, "Action button is clicked.", Snackbar.LENGTH_SHORT).show());
5657

58+
DemoUtils.setupClickableContentText(view);
59+
5760
return view;
5861
}
5962

catalog/java/io/material/catalog/topappbar/TopAppBarCollapsingMultilineDemoFragment.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import com.google.android.material.appbar.CollapsingToolbarLayout;
3737
import com.google.android.material.color.MaterialColors;
3838
import io.material.catalog.feature.DemoFragment;
39+
import io.material.catalog.feature.DemoUtils;
3940

4041
/** A fragment that displays a collapsing Top App Bar demo for the Catalog app. */
4142
public class TopAppBarCollapsingMultilineDemoFragment extends DemoFragment {
@@ -66,6 +67,8 @@ public View onCreateDemoView(
6667
activity.setSupportActionBar(toolbar);
6768
colorPrimary = MaterialColors.getColor(view, androidx.appcompat.R.attr.colorPrimary);
6869

70+
DemoUtils.setupClickableContentText(view);
71+
6972
return view;
7073
}
7174

catalog/java/io/material/catalog/topappbar/TopAppBarCollapsingToggleableActionDemoFragment.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import com.google.android.material.button.MaterialButton;
3030
import com.google.android.material.snackbar.Snackbar;
3131
import io.material.catalog.feature.DemoFragment;
32+
import io.material.catalog.feature.DemoUtils;
3233

3334
/**
3435
* A fragment that displays a medium Collapsing Toolbar Top App Bar with a toggleable action button
@@ -59,6 +60,8 @@ public View onCreateDemoView(
5960
Snackbar.LENGTH_SHORT)
6061
.show());
6162

63+
DemoUtils.setupClickableContentText(view);
64+
6265
return view;
6366
}
6467

0 commit comments

Comments
 (0)