Prevent scrolling after the homepage recreating

- Only apply the layout transition when contextual home is enabled
- Do not scroll for highlighting when the homepage is recreated and
  never scrolled

Fix: 222238012
Bug: 222473415
Test: robotest, manual
Change-Id: I490c3f8dbca63a5250bae01555592b7795c90af2
This commit is contained in:
Jason Chiu
2022-03-09 14:46:51 +08:00
parent a92e6d8987
commit 764e7fbc44
4 changed files with 28 additions and 12 deletions

View File

@@ -23,7 +23,6 @@ import android.os.Parcelable;
import android.text.TextUtils;
import android.util.Log;
import androidx.fragment.app.FragmentActivity;
import androidx.preference.PreferenceScreen;
import androidx.recyclerview.widget.RecyclerView;
@@ -43,14 +42,17 @@ public class TopLevelHighlightMixin implements Parcelable, DialogInterface.OnSho
private String mHiddenKey;
private DialogInterface mDialog;
private HighlightableTopLevelPreferenceAdapter mTopLevelAdapter;
private boolean mActivityEmbedded;
public TopLevelHighlightMixin() {
public TopLevelHighlightMixin(boolean activityEmbedded) {
mActivityEmbedded = activityEmbedded;
}
public TopLevelHighlightMixin(Parcel source) {
mCurrentKey = source.readString();
mPreviousKey = source.readString();
mHiddenKey = source.readString();
mActivityEmbedded = source.readBoolean();
}
@Override
@@ -58,6 +60,7 @@ public class TopLevelHighlightMixin implements Parcelable, DialogInterface.OnSho
dest.writeString(mCurrentKey);
dest.writeString(mPreviousKey);
dest.writeString(mHiddenKey);
dest.writeBoolean(mActivityEmbedded);
}
@Override
@@ -96,8 +99,16 @@ public class TopLevelHighlightMixin implements Parcelable, DialogInterface.OnSho
}
}
void setActivityEmbedded(boolean activityEmbedded) {
mActivityEmbedded = activityEmbedded;
}
boolean isActivityEmbedded() {
return mActivityEmbedded;
}
RecyclerView.Adapter onCreateAdapter(TopLevelSettings topLevelSettings,
PreferenceScreen preferenceScreen) {
PreferenceScreen preferenceScreen, boolean scrollNeeded) {
if (TextUtils.isEmpty(mCurrentKey)) {
mCurrentKey = getHighlightPrefKeyFromArguments(topLevelSettings.getArguments());
}
@@ -105,7 +116,7 @@ public class TopLevelHighlightMixin implements Parcelable, DialogInterface.OnSho
Log.d(TAG, "onCreateAdapter, pref key: " + mCurrentKey);
mTopLevelAdapter = new HighlightableTopLevelPreferenceAdapter(
(SettingsHomepageActivity) topLevelSettings.getActivity(), preferenceScreen,
topLevelSettings.getListView(), mCurrentKey);
topLevelSettings.getListView(), mCurrentKey, scrollNeeded);
return mTopLevelAdapter;
}
@@ -129,7 +140,7 @@ public class TopLevelHighlightMixin implements Parcelable, DialogInterface.OnSho
}
}
void highlightPreferenceIfNeeded(FragmentActivity activity) {
void highlightPreferenceIfNeeded() {
if (mTopLevelAdapter != null) {
mTopLevelAdapter.requestHighlight();
}