workaround(expressive): Fix padding issues Setup > Vision settings
- Works around issue where Setup and Settings libraries are clashing when applying their new expressive themes at the same time. - Updates illustration prefs to match parent width. Otherwise this new padding workaround causes the images to get clipped. Fix: 390545391 Bug: 400479388 Test: manual only; see screenshots Flag: EXEMPT using custom flagging from Setup ThemeHelper lib Change-Id: Ie00cdf3e68a2ff7c40aedd04eb5bed0adaa9cf84
This commit is contained in:
committed by
Daniel Norman
parent
f257978cee
commit
f5cc0119ee
@@ -26,7 +26,7 @@
|
|||||||
android:minHeight="?android:attr/listPreferredItemHeight"
|
android:minHeight="?android:attr/listPreferredItemHeight"
|
||||||
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
|
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
|
||||||
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
|
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
|
||||||
android:paddingBottom="?android:attr/listPreferredItemPaddingEnd">
|
android:paddingVertical="20dp">
|
||||||
|
|
||||||
<CheckBox
|
<CheckBox
|
||||||
android:id="@android:id/checkbox"
|
android:id="@android:id/checkbox"
|
||||||
|
@@ -37,6 +37,7 @@ import android.view.accessibility.AccessibilityManager;
|
|||||||
|
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
|
import androidx.preference.PreferenceScreen;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
@@ -110,6 +111,14 @@ public class AccessibilitySettingsForSetupWizard extends DashboardFragment
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) {
|
||||||
|
if (ThemeHelper.shouldApplyGlifExpressiveStyle(getContext())) {
|
||||||
|
return new PreferenceAdapterInSuw(preferenceScreen);
|
||||||
|
}
|
||||||
|
return super.onCreateAdapter(preferenceScreen);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RecyclerView onCreateRecyclerView(LayoutInflater inflater, ViewGroup parent,
|
public RecyclerView onCreateRecyclerView(LayoutInflater inflater, ViewGroup parent,
|
||||||
Bundle savedInstanceState) {
|
Bundle savedInstanceState) {
|
||||||
|
@@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2025 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.settings.accessibility;
|
||||||
|
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.preference.PreferenceGroup;
|
||||||
|
import androidx.preference.PreferenceViewHolder;
|
||||||
|
|
||||||
|
import com.android.settingslib.widget.SettingsPreferenceGroupAdapter;
|
||||||
|
|
||||||
|
import com.google.android.setupdesign.util.ItemStyler;
|
||||||
|
|
||||||
|
public class PreferenceAdapterInSuw extends SettingsPreferenceGroupAdapter {
|
||||||
|
|
||||||
|
public PreferenceAdapterInSuw(@NonNull PreferenceGroup preferenceGroup) {
|
||||||
|
super(preferenceGroup);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBindViewHolder(@NonNull PreferenceViewHolder holder, int position) {
|
||||||
|
super.onBindViewHolder(holder, position);
|
||||||
|
View view = holder.itemView;
|
||||||
|
int paddingStart = view.getPaddingStart();
|
||||||
|
int paddingTop = view.getPaddingTop();
|
||||||
|
int paddingEnd = view.getPaddingEnd();
|
||||||
|
int paddingBottom = view.getPaddingBottom();
|
||||||
|
ItemStyler.applyPartnerCustomizationItemViewLayoutStyle(view);
|
||||||
|
view.setPaddingRelative(view.getPaddingStart() + paddingStart,
|
||||||
|
paddingTop, view.getPaddingEnd() + paddingEnd,
|
||||||
|
paddingBottom);
|
||||||
|
}
|
||||||
|
}
|
@@ -27,6 +27,7 @@ import android.view.LayoutInflater;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
|
import androidx.preference.PreferenceScreen;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.android.internal.annotations.VisibleForTesting;
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
@@ -35,6 +36,7 @@ import com.android.settingslib.Utils;
|
|||||||
|
|
||||||
import com.google.android.setupcompat.template.FooterBarMixin;
|
import com.google.android.setupcompat.template.FooterBarMixin;
|
||||||
import com.google.android.setupdesign.GlifPreferenceLayout;
|
import com.google.android.setupdesign.GlifPreferenceLayout;
|
||||||
|
import com.google.android.setupdesign.util.ThemeHelper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A {@link androidx.preference.PreferenceFragmentCompat} that displays the settings page related
|
* A {@link androidx.preference.PreferenceFragmentCompat} that displays the settings page related
|
||||||
@@ -96,6 +98,14 @@ public class TextReadingPreferenceFragmentForSetupWizard extends TextReadingPref
|
|||||||
return super.onCreateRecyclerView(inflater, parent, savedInstanceState);
|
return super.onCreateRecyclerView(inflater, parent, savedInstanceState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) {
|
||||||
|
if (ThemeHelper.shouldApplyGlifExpressiveStyle(getContext())) {
|
||||||
|
return new PreferenceAdapterInSuw(preferenceScreen);
|
||||||
|
}
|
||||||
|
return super.onCreateAdapter(preferenceScreen);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMetricsCategory() {
|
public int getMetricsCategory() {
|
||||||
return SettingsEnums.SUW_ACCESSIBILITY_TEXT_READING_OPTIONS;
|
return SettingsEnums.SUW_ACCESSIBILITY_TEXT_READING_OPTIONS;
|
||||||
|
@@ -54,6 +54,7 @@ import androidx.annotation.VisibleForTesting;
|
|||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.PreferenceCategory;
|
import androidx.preference.PreferenceCategory;
|
||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
|
import androidx.preference.PreferenceViewHolder;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.android.internal.accessibility.common.ShortcutConstants;
|
import com.android.internal.accessibility.common.ShortcutConstants;
|
||||||
@@ -71,6 +72,7 @@ import com.android.settingslib.widget.IllustrationPreference;
|
|||||||
import com.android.settingslib.widget.TopIntroPreference;
|
import com.android.settingslib.widget.TopIntroPreference;
|
||||||
|
|
||||||
import com.google.android.setupcompat.util.WizardManagerHelper;
|
import com.google.android.setupcompat.util.WizardManagerHelper;
|
||||||
|
import com.google.android.setupdesign.util.ThemeHelper;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -426,7 +428,19 @@ public abstract class ToggleFeaturePreferenceFragment extends DashboardFragment
|
|||||||
return drawable;
|
return drawable;
|
||||||
}
|
}
|
||||||
private void initAnimatedImagePreference() {
|
private void initAnimatedImagePreference() {
|
||||||
initAnimatedImagePreference(mImageUri, new IllustrationPreference(getPrefContext()));
|
initAnimatedImagePreference(mImageUri, new IllustrationPreference(getPrefContext()) {
|
||||||
|
@Override
|
||||||
|
public void onBindViewHolder(PreferenceViewHolder holder) {
|
||||||
|
super.onBindViewHolder(holder);
|
||||||
|
if (ThemeHelper.shouldApplyGlifExpressiveStyle(getContext())
|
||||||
|
&& isAnySetupWizard()) {
|
||||||
|
View illustrationFrame = holder.findViewById(R.id.illustration_frame);
|
||||||
|
final ViewGroup.LayoutParams lp = illustrationFrame.getLayoutParams();
|
||||||
|
lp.width = ViewGroup.LayoutParams.MATCH_PARENT;
|
||||||
|
illustrationFrame.setLayoutParams(lp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
|
@@ -25,12 +25,14 @@ import android.view.LayoutInflater;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
|
import androidx.preference.PreferenceScreen;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
|
|
||||||
import com.google.android.setupcompat.template.FooterBarMixin;
|
import com.google.android.setupcompat.template.FooterBarMixin;
|
||||||
import com.google.android.setupdesign.GlifPreferenceLayout;
|
import com.google.android.setupdesign.GlifPreferenceLayout;
|
||||||
|
import com.google.android.setupdesign.util.ThemeHelper;
|
||||||
|
|
||||||
public class ToggleScreenMagnificationPreferenceFragmentForSetupWizard
|
public class ToggleScreenMagnificationPreferenceFragmentForSetupWizard
|
||||||
extends ToggleScreenMagnificationPreferenceFragment {
|
extends ToggleScreenMagnificationPreferenceFragment {
|
||||||
@@ -60,6 +62,14 @@ public class ToggleScreenMagnificationPreferenceFragmentForSetupWizard
|
|||||||
hidePreferenceSettingComponents();
|
hidePreferenceSettingComponents();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) {
|
||||||
|
if (ThemeHelper.shouldApplyGlifExpressiveStyle(getContext())) {
|
||||||
|
return new PreferenceAdapterInSuw(preferenceScreen);
|
||||||
|
}
|
||||||
|
return super.onCreateAdapter(preferenceScreen);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hide the magnification preference settings in the SuW's vision settings.
|
* Hide the magnification preference settings in the SuW's vision settings.
|
||||||
*/
|
*/
|
||||||
|
@@ -25,12 +25,14 @@ import android.view.LayoutInflater;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
|
import androidx.preference.PreferenceScreen;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
|
|
||||||
import com.google.android.setupcompat.template.FooterBarMixin;
|
import com.google.android.setupcompat.template.FooterBarMixin;
|
||||||
import com.google.android.setupdesign.GlifPreferenceLayout;
|
import com.google.android.setupdesign.GlifPreferenceLayout;
|
||||||
|
import com.google.android.setupdesign.util.ThemeHelper;
|
||||||
|
|
||||||
public class ToggleScreenReaderPreferenceFragmentForSetupWizard
|
public class ToggleScreenReaderPreferenceFragmentForSetupWizard
|
||||||
extends ToggleAccessibilityServicePreferenceFragment {
|
extends ToggleAccessibilityServicePreferenceFragment {
|
||||||
@@ -74,6 +76,14 @@ public class ToggleScreenReaderPreferenceFragmentForSetupWizard
|
|||||||
return super.onCreateRecyclerView(inflater, parent, savedInstanceState);
|
return super.onCreateRecyclerView(inflater, parent, savedInstanceState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) {
|
||||||
|
if (ThemeHelper.shouldApplyGlifExpressiveStyle(getContext())) {
|
||||||
|
return new PreferenceAdapterInSuw(preferenceScreen);
|
||||||
|
}
|
||||||
|
return super.onCreateAdapter(preferenceScreen);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMetricsCategory() {
|
public int getMetricsCategory() {
|
||||||
return SettingsEnums.SUW_ACCESSIBILITY_TOGGLE_SCREEN_READER;
|
return SettingsEnums.SUW_ACCESSIBILITY_TOGGLE_SCREEN_READER;
|
||||||
|
@@ -25,12 +25,14 @@ import android.view.LayoutInflater;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
|
import androidx.preference.PreferenceScreen;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
|
|
||||||
import com.google.android.setupcompat.template.FooterBarMixin;
|
import com.google.android.setupcompat.template.FooterBarMixin;
|
||||||
import com.google.android.setupdesign.GlifPreferenceLayout;
|
import com.google.android.setupdesign.GlifPreferenceLayout;
|
||||||
|
import com.google.android.setupdesign.util.ThemeHelper;
|
||||||
|
|
||||||
public class ToggleSelectToSpeakPreferenceFragmentForSetupWizard
|
public class ToggleSelectToSpeakPreferenceFragmentForSetupWizard
|
||||||
extends InvisibleToggleAccessibilityServicePreferenceFragment {
|
extends InvisibleToggleAccessibilityServicePreferenceFragment {
|
||||||
@@ -74,6 +76,14 @@ public class ToggleSelectToSpeakPreferenceFragmentForSetupWizard
|
|||||||
return super.onCreateRecyclerView(inflater, parent, savedInstanceState);
|
return super.onCreateRecyclerView(inflater, parent, savedInstanceState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) {
|
||||||
|
if (ThemeHelper.shouldApplyGlifExpressiveStyle(getContext())) {
|
||||||
|
return new PreferenceAdapterInSuw(preferenceScreen);
|
||||||
|
}
|
||||||
|
return super.onCreateAdapter(preferenceScreen);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMetricsCategory() {
|
public int getMetricsCategory() {
|
||||||
return SettingsEnums.SUW_ACCESSIBILITY_TOGGLE_SELECT_TO_SPEAK;
|
return SettingsEnums.SUW_ACCESSIBILITY_TOGGLE_SELECT_TO_SPEAK;
|
||||||
|
@@ -53,6 +53,7 @@ import androidx.annotation.NonNull;
|
|||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
|
import androidx.preference.PreferenceScreen;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.android.internal.accessibility.common.ShortcutConstants;
|
import com.android.internal.accessibility.common.ShortcutConstants;
|
||||||
@@ -62,6 +63,7 @@ import com.android.settings.R;
|
|||||||
import com.android.settings.SetupWizardUtils;
|
import com.android.settings.SetupWizardUtils;
|
||||||
import com.android.settings.accessibility.AccessibilitySetupWizardUtils;
|
import com.android.settings.accessibility.AccessibilitySetupWizardUtils;
|
||||||
import com.android.settings.accessibility.Flags;
|
import com.android.settings.accessibility.Flags;
|
||||||
|
import com.android.settings.accessibility.PreferenceAdapterInSuw;
|
||||||
import com.android.settings.accessibility.PreferredShortcuts;
|
import com.android.settings.accessibility.PreferredShortcuts;
|
||||||
import com.android.settings.core.SubSettingLauncher;
|
import com.android.settings.core.SubSettingLauncher;
|
||||||
import com.android.settings.dashboard.DashboardFragment;
|
import com.android.settings.dashboard.DashboardFragment;
|
||||||
@@ -70,6 +72,7 @@ import com.android.settingslib.core.AbstractPreferenceController;
|
|||||||
import com.google.android.setupcompat.template.FooterBarMixin;
|
import com.google.android.setupcompat.template.FooterBarMixin;
|
||||||
import com.google.android.setupcompat.util.WizardManagerHelper;
|
import com.google.android.setupcompat.util.WizardManagerHelper;
|
||||||
import com.google.android.setupdesign.GlifPreferenceLayout;
|
import com.google.android.setupdesign.GlifPreferenceLayout;
|
||||||
|
import com.google.android.setupdesign.util.ThemeHelper;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@@ -245,6 +248,15 @@ public class EditShortcutsPreferenceFragment extends DashboardFragment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) {
|
||||||
|
if (ThemeHelper.shouldApplyGlifExpressiveStyle(getContext())
|
||||||
|
&& WizardManagerHelper.isAnySetupWizard(getIntent())) {
|
||||||
|
return new PreferenceAdapterInSuw(preferenceScreen);
|
||||||
|
}
|
||||||
|
return super.onCreateAdapter(preferenceScreen);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||||
super.onViewCreated(view, savedInstanceState);
|
super.onViewCreated(view, savedInstanceState);
|
||||||
|
Reference in New Issue
Block a user