Fix preferences v14 issues in lock screeen setup

Preferences support-v14 expects a RecyclerView, and cannot override
onCreateView to inflate custom views. This changes
SetupChooseLockGeneric to use suw_template_no_scroll and let
preference framework inflate its RecyclerView inside it.

Bug: 24929660
Change-Id: Icda0fed37b68d4cffb49da46a241185f32d7e467
This commit is contained in:
Maurice Lam
2015-10-15 14:06:24 -07:00
parent 2b7592d817
commit bd28ceef10
3 changed files with 23 additions and 21 deletions

View File

@@ -15,12 +15,11 @@
limitations under the License. limitations under the License.
--> -->
<com.android.setupwizardlib.SetupWizardListLayout <com.android.setupwizardlib.SetupWizardLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res-auto" xmlns:settings="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout="@layout/suw_no_scroll_template"
settings:suwBackgroundTile="@drawable/setup_illustration_tile" settings:suwBackgroundTile="@drawable/setup_illustration_tile"
settings:suwHeaderText="@string/setup_lock_settings_picker_title" settings:suwIllustrationHorizontalTile="@drawable/setup_illustration_horizontal_tile" />
settings:suwIllustrationHorizontalTile="@drawable/setup_illustration_horizontal_tile"
settings:suwIllustrationImage="@drawable/setup_illustration_lock_screen" />

View File

@@ -29,13 +29,12 @@
<style name="SetupWizardDisableAppStartingTheme"> <style name="SetupWizardDisableAppStartingTheme">
<!-- Theme to disable the app starting window. The actual theme of the activity needs to <!-- Theme to disable the app starting window. The actual theme of the activity needs to
be then set in code via setTheme or onApplyThemeResource. --> be then set in code via setTheme or onApplyThemeResource. -->
<item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item> <item name="preferenceTheme">@style/PreferenceThemeOverlay.SetupWizard</item>
<item name="android:windowBackground">@null</item> <item name="android:windowBackground">@null</item>
</style> </style>
<style name="SetupWizardTheme" parent="SuwThemeMaterial"> <style name="SetupWizardTheme" parent="SuwThemeMaterial">
<!-- For all Alert Dialogs --> <!-- For all Alert Dialogs -->
<item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
<item name="android:alertDialogTheme">@style/ThemeOverlay.AlertDialog</item> <item name="android:alertDialogTheme">@style/ThemeOverlay.AlertDialog</item>
<item name="android:listPreferredItemPaddingEnd">@dimen/suw_layout_margin_sides</item> <item name="android:listPreferredItemPaddingEnd">@dimen/suw_layout_margin_sides</item>
<item name="android:listPreferredItemPaddingStart">@dimen/suw_layout_margin_sides</item> <item name="android:listPreferredItemPaddingStart">@dimen/suw_layout_margin_sides</item>
@@ -52,6 +51,7 @@
<item name="wifi_signal_color">@color/setup_wizard_wifi_color_dark</item> <item name="wifi_signal_color">@color/setup_wizard_wifi_color_dark</item>
<item name="wifi_signal">@drawable/wifi_signal</item> <item name="wifi_signal">@drawable/wifi_signal</item>
<item name="preferenceBackgroundColor">?android:attr/colorBackground</item> <item name="preferenceBackgroundColor">?android:attr/colorBackground</item>
<item name="preferenceTheme">@style/PreferenceThemeOverlay.SetupWizard</item>
<!-- LockPatternView colors --> <!-- LockPatternView colors -->
<item name="@*android:regularColor">@color/setup_lock_pattern_view_regular_color_dark</item> <item name="@*android:regularColor">@color/setup_lock_pattern_view_regular_color_dark</item>
@@ -61,7 +61,6 @@
<style name="SetupWizardTheme.Light" parent="SuwThemeMaterial.Light"> <style name="SetupWizardTheme.Light" parent="SuwThemeMaterial.Light">
<!-- For all Alert Dialogs --> <!-- For all Alert Dialogs -->
<item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
<item name="android:alertDialogTheme">@style/ThemeOverlay.AlertDialog</item> <item name="android:alertDialogTheme">@style/ThemeOverlay.AlertDialog</item>
<item name="android:listPreferredItemPaddingEnd">@dimen/suw_layout_margin_sides</item> <item name="android:listPreferredItemPaddingEnd">@dimen/suw_layout_margin_sides</item>
<item name="android:listPreferredItemPaddingStart">@dimen/suw_layout_margin_sides</item> <item name="android:listPreferredItemPaddingStart">@dimen/suw_layout_margin_sides</item>
@@ -78,6 +77,7 @@
<item name="wifi_signal_color">@color/setup_wizard_wifi_color_light</item> <item name="wifi_signal_color">@color/setup_wizard_wifi_color_light</item>
<item name="wifi_signal">@drawable/wifi_signal</item> <item name="wifi_signal">@drawable/wifi_signal</item>
<item name="preferenceBackgroundColor">?android:attr/colorBackground</item> <item name="preferenceBackgroundColor">?android:attr/colorBackground</item>
<item name="preferenceTheme">@style/PreferenceThemeOverlay.SetupWizard</item>
<!-- LockPatternView colors --> <!-- LockPatternView colors -->
<item name="@*android:regularColor">@color/setup_lock_pattern_view_regular_color_light</item> <item name="@*android:regularColor">@color/setup_lock_pattern_view_regular_color_light</item>
@@ -85,6 +85,14 @@
<item name="@*android:errorColor">@color/setup_lock_pattern_view_error_color_light</item> <item name="@*android:errorColor">@color/setup_lock_pattern_view_error_color_light</item>
</style> </style>
<style name="PreferenceThemeOverlay.SetupWizard" parent="PreferenceThemeOverlay.v14.Material">
<item name="preferenceFragmentStyle">@style/SetupWizardPreferenceFragmentStyle</item>
</style>
<style name="SetupWizardPreferenceFragmentStyle" parent="PreferenceFragment.Material">
<item name="android:layout">@layout/setup_preference</item>
</style>
<!-- Theme with no local references, used by AccountPreferenceBase where we have to inflate <!-- Theme with no local references, used by AccountPreferenceBase where we have to inflate
layouts against a remote context using our local theme colors. Due to the implementation layouts against a remote context using our local theme colors. Due to the implementation
details of Theme, we can't reference any local resources and MUST instead use the values details of Theme, we can't reference any local resources and MUST instead use the values

View File

@@ -24,12 +24,10 @@ import android.content.res.Resources;
import android.os.Bundle; import android.os.Bundle;
import android.os.UserHandle; import android.os.UserHandle;
import android.support.v14.preference.PreferenceFragment; import android.support.v14.preference.PreferenceFragment;
import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup;
import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.LockPatternUtils;
import com.android.setupwizardlib.SetupWizardListLayout; import com.android.setupwizardlib.SetupWizardLayout;
import com.android.setupwizardlib.view.NavigationBar; import com.android.setupwizardlib.view.NavigationBar;
/** /**
@@ -63,22 +61,19 @@ public class SetupChooseLockGeneric extends ChooseLockGeneric {
private static final String EXTRA_PASSWORD_QUALITY = ":settings:password_quality"; private static final String EXTRA_PASSWORD_QUALITY = ":settings:password_quality";
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, public void onViewCreated(View view, Bundle savedInstanceState) {
Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState);
final SetupWizardListLayout layout = (SetupWizardListLayout) inflater.inflate(
R.layout.setup_choose_lock_generic, container, false);
SetupWizardUtils.setImmersiveMode(getActivity());
SetupWizardLayout layout = (SetupWizardLayout) view;
final NavigationBar navigationBar = layout.getNavigationBar(); final NavigationBar navigationBar = layout.getNavigationBar();
navigationBar.getNextButton().setEnabled(false); navigationBar.getNextButton().setEnabled(false);
navigationBar.setNavigationBarListener(this); navigationBar.setNavigationBarListener(this);
return layout; layout.setIllustration(R.drawable.setup_illustration_lock_screen,
} R.drawable.setup_illustration_horizontal_tile);
layout.setHeaderText(R.string.setup_lock_settings_picker_title);
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
SetupWizardUtils.setImmersiveMode(getActivity());
} }
@Override @Override