diff --git a/aconfig/settings_flag_declarations.aconfig b/aconfig/settings_flag_declarations.aconfig index 2971d22b5de..548a733db7e 100644 --- a/aconfig/settings_flag_declarations.aconfig +++ b/aconfig/settings_flag_declarations.aconfig @@ -80,3 +80,13 @@ flag { purpose: PURPOSE_BUGFIX } } + +flag { + name: "extended_screenshots_exclude_nested_scrollables" + namespace: "systemui" + description: "Sets a flag on the main scrollable container to exclude any nested scrollable views as potential targets for extended screenshots." + bug: "399810823" + metadata { + purpose: PURPOSE_BUGFIX + } +} diff --git a/src/com/android/settings/homepage/SettingsHomepageActivity.java b/src/com/android/settings/homepage/SettingsHomepageActivity.java index cf9dc6d2106..fa3846b5421 100644 --- a/src/com/android/settings/homepage/SettingsHomepageActivity.java +++ b/src/com/android/settings/homepage/SettingsHomepageActivity.java @@ -778,6 +778,16 @@ public class SettingsHomepageActivity extends FragmentActivity implements // Prevent inner RecyclerView gets focus and invokes scrolling. view.setFocusableInTouchMode(true); view.requestFocus(); + + if (Flags.extendedScreenshotsExcludeNestedScrollables()) { + // Force scroll capture to select the NestedScrollView, instead of the non-scrollable + // RecyclerView which is contained inside it with no height constraint. + final View scrollableContainer = findViewById(R.id.main_content_scrollable_container); + if (scrollableContainer != null) { + scrollableContainer.setScrollCaptureHint( + View.SCROLL_CAPTURE_HINT_EXCLUDE_DESCENDANTS); + } + } } private void updateHomepageAppBar() {