From 151a088094a8503192979549714783de9095e822 Mon Sep 17 00:00:00 2001 From: Sunny Shao Date: Thu, 11 Aug 2022 15:33:45 +0800 Subject: [PATCH] Fix the header can't be scrolling problem in landscape mode - Settings header is restricted scrolling by this ag/15029686 - To void some pages can't show the contain part while heading unscrolling. We allow the header can be scrolling in the landscape mode. Fixes: 207353353 Test: make RunSettingsRoboTests -j Change-Id: Ice97c6244716d4768167feb78588807d13b06a94 --- .../manageapplications/ManageApplications.java | 8 +++++--- src/com/android/settings/core/SettingsBaseActivity.java | 9 ++++++--- .../settings/datetime/timezone/BaseTimeZonePicker.java | 8 +++++--- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/com/android/settings/applications/manageapplications/ManageApplications.java b/src/com/android/settings/applications/manageapplications/ManageApplications.java index d020f3386ac..7fd460b8d75 100644 --- a/src/com/android/settings/applications/manageapplications/ManageApplications.java +++ b/src/com/android/settings/applications/manageapplications/ManageApplications.java @@ -46,6 +46,7 @@ import android.content.Context; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageItemInfo; +import android.content.res.Configuration; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Build; @@ -431,7 +432,7 @@ public class ManageApplications extends InstrumentedFragment mResetAppsHelper.onRestoreInstanceState(savedInstanceState); mAppBarLayout = getActivity().findViewById(R.id.app_bar); - disableToolBarScrollableBehavior(); + autoSetCollapsingToolbarLayoutScrolling(); return mRootView; } @@ -893,7 +894,7 @@ public class ManageApplications extends InstrumentedFragment } } - private void disableToolBarScrollableBehavior() { + private void autoSetCollapsingToolbarLayoutScrolling() { final CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) mAppBarLayout.getLayoutParams(); final AppBarLayout.Behavior behavior = new AppBarLayout.Behavior(); @@ -901,7 +902,8 @@ public class ManageApplications extends InstrumentedFragment new AppBarLayout.Behavior.DragCallback() { @Override public boolean canDrag(@NonNull AppBarLayout appBarLayout) { - return false; + return appBarLayout.getResources().getConfiguration().orientation + == Configuration.ORIENTATION_LANDSCAPE; } }); params.setBehavior(behavior); diff --git a/src/com/android/settings/core/SettingsBaseActivity.java b/src/com/android/settings/core/SettingsBaseActivity.java index 5f15093259f..b4380ab4adc 100644 --- a/src/com/android/settings/core/SettingsBaseActivity.java +++ b/src/com/android/settings/core/SettingsBaseActivity.java @@ -22,6 +22,7 @@ import android.app.ActivityManager; import android.content.ComponentName; import android.content.Intent; import android.content.pm.PackageManager; +import android.content.res.Configuration; import android.content.res.TypedArray; import android.graphics.text.LineBreakConfig; import android.os.Bundle; @@ -117,7 +118,7 @@ public class SettingsBaseActivity extends FragmentActivity implements CategoryHa LineBreakConfig.LINE_BREAK_WORD_STYLE_PHRASE) .build())); } - disableCollapsingToolbarLayoutScrollingBehavior(); + autoSetCollapsingToolbarLayoutScrolling(); } else { super.setContentView(R.layout.settings_base_layout); } @@ -252,7 +253,7 @@ public class SettingsBaseActivity extends FragmentActivity implements CategoryHa return false; } - private void disableCollapsingToolbarLayoutScrollingBehavior() { + private void autoSetCollapsingToolbarLayoutScrolling() { if (mAppBarLayout == null) { return; } @@ -263,7 +264,9 @@ public class SettingsBaseActivity extends FragmentActivity implements CategoryHa new AppBarLayout.Behavior.DragCallback() { @Override public boolean canDrag(@NonNull AppBarLayout appBarLayout) { - return false; + // Header can be scrolling while device in landscape mode. + return appBarLayout.getResources().getConfiguration().orientation + == Configuration.ORIENTATION_LANDSCAPE; } }); params.setBehavior(behavior); diff --git a/src/com/android/settings/datetime/timezone/BaseTimeZonePicker.java b/src/com/android/settings/datetime/timezone/BaseTimeZonePicker.java index 6ce9f6f9ae8..f801cb9ec77 100644 --- a/src/com/android/settings/datetime/timezone/BaseTimeZonePicker.java +++ b/src/com/android/settings/datetime/timezone/BaseTimeZonePicker.java @@ -16,6 +16,7 @@ package com.android.settings.datetime.timezone; +import android.content.res.Configuration; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; @@ -97,7 +98,7 @@ public abstract class BaseTimeZonePicker extends InstrumentedFragment LinearLayoutManager.VERTICAL, /* reverseLayout */ false)); mRecyclerView.setAdapter(mAdapter); mAppBarLayout = getActivity().findViewById(R.id.app_bar); - disableToolBarScrollableBehavior(); + autoSetCollapsingToolbarLayoutScrolling(); // Initialize TimeZoneDataLoader only when mRecyclerView is ready to avoid race // during onDateLoaderReady callback. @@ -193,7 +194,7 @@ public abstract class BaseTimeZonePicker extends InstrumentedFragment void onListItemClick(T item); } - private void disableToolBarScrollableBehavior() { + private void autoSetCollapsingToolbarLayoutScrolling() { CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) mAppBarLayout.getLayoutParams(); AppBarLayout.Behavior behavior = new AppBarLayout.Behavior(); @@ -201,7 +202,8 @@ public abstract class BaseTimeZonePicker extends InstrumentedFragment new AppBarLayout.Behavior.DragCallback() { @Override public boolean canDrag(@NonNull AppBarLayout appBarLayout) { - return false; + return appBarLayout.getResources().getConfiguration().orientation + == Configuration.ORIENTATION_LANDSCAPE; } }); params.setBehavior(behavior);