From 7fc97c913487c4df97b8af111390942d61c1d331 Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Wed, 28 Oct 2015 14:33:39 -0400 Subject: Let support preferences use DeviceDefault themes Change-Id: I5a0f074dfd1b948b1ced9195ae937e2ad80a5f28 --- api/current.txt | 4 ++++ api/system-current.txt | 4 ++++ .../android/preference/PreferenceFragment.java | 24 ++++++++++++++++++++- core/java/android/preference/SwitchPreference.java | 2 +- core/res/res/layout/preference_list_fragment.xml | 25 +++++++++++++--------- .../layout/preference_list_fragment_material.xml | 25 +++++++++++++--------- core/res/res/layout/preference_widget_switch.xml | 2 +- core/res/res/values/attrs.xml | 1 + core/res/res/values/ids.xml | 3 +++ core/res/res/values/public.xml | 4 ++++ core/res/res/values/styles_material.xml | 1 + core/res/res/values/symbols.xml | 2 +- 12 files changed, 73 insertions(+), 24 deletions(-) diff --git a/api/current.txt b/api/current.txt index 834699df15de..96ecad617a91 100644 --- a/api/current.txt +++ b/api/current.txt @@ -933,6 +933,7 @@ package android { field public static final int port = 16842793; // 0x1010029 field public static final int positiveButtonText = 16843253; // 0x10101f5 field public static final int preferenceCategoryStyle = 16842892; // 0x101008c + field public static final int preferenceFragmentStyle = 16844039; // 0x1010507 field public static final int preferenceInformationStyle = 16842893; // 0x101008d field public static final int preferenceLayoutChild = 16842900; // 0x1010094 field public static final int preferenceScreenStyle = 16842891; // 0x101008b @@ -1710,11 +1711,13 @@ package android { field public static final int icon = 16908294; // 0x1020006 field public static final int icon1 = 16908295; // 0x1020007 field public static final int icon2 = 16908296; // 0x1020008 + field public static final int icon_frame = 16908350; // 0x102003e field public static final int input = 16908297; // 0x1020009 field public static final int inputArea = 16908318; // 0x102001e field public static final int inputExtractEditText = 16908325; // 0x1020025 field public static final int keyboardView = 16908326; // 0x1020026 field public static final int list = 16908298; // 0x102000a + field public static final int list_container = 16908351; // 0x102003f field public static final int mask = 16908334; // 0x102002e field public static final int message = 16908299; // 0x102000b field public static final int navigationBarBackground = 16908336; // 0x1020030 @@ -1734,6 +1737,7 @@ package android { field public static final int stopSelectingText = 16908329; // 0x1020029 field public static final int summary = 16908304; // 0x1020010 field public static final int switchInputMethod = 16908324; // 0x1020024 + field public static final int switch_widget = 16908352; // 0x1020040 field public static final int tabcontent = 16908305; // 0x1020011 field public static final int tabhost = 16908306; // 0x1020012 field public static final int tabs = 16908307; // 0x1020013 diff --git a/api/system-current.txt b/api/system-current.txt index 72ef7a36601d..0605851f058d 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -1025,6 +1025,7 @@ package android { field public static final int port = 16842793; // 0x1010029 field public static final int positiveButtonText = 16843253; // 0x10101f5 field public static final int preferenceCategoryStyle = 16842892; // 0x101008c + field public static final int preferenceFragmentStyle = 16844039; // 0x1010507 field public static final int preferenceInformationStyle = 16842893; // 0x101008d field public static final int preferenceLayoutChild = 16842900; // 0x1010094 field public static final int preferenceScreenStyle = 16842891; // 0x101008b @@ -1806,11 +1807,13 @@ package android { field public static final int icon = 16908294; // 0x1020006 field public static final int icon1 = 16908295; // 0x1020007 field public static final int icon2 = 16908296; // 0x1020008 + field public static final int icon_frame = 16908350; // 0x102003e field public static final int input = 16908297; // 0x1020009 field public static final int inputArea = 16908318; // 0x102001e field public static final int inputExtractEditText = 16908325; // 0x1020025 field public static final int keyboardView = 16908326; // 0x1020026 field public static final int list = 16908298; // 0x102000a + field public static final int list_container = 16908351; // 0x102003f field public static final int mask = 16908334; // 0x102002e field public static final int message = 16908299; // 0x102000b field public static final int navigationBarBackground = 16908336; // 0x1020030 @@ -1830,6 +1833,7 @@ package android { field public static final int stopSelectingText = 16908329; // 0x1020029 field public static final int summary = 16908304; // 0x1020010 field public static final int switchInputMethod = 16908324; // 0x1020024 + field public static final int switch_widget = 16908352; // 0x1020040 field public static final int tabcontent = 16908305; // 0x1020011 field public static final int tabhost = 16908306; // 0x1020012 field public static final int tabs = 16908307; // 0x1020013 diff --git a/core/java/android/preference/PreferenceFragment.java b/core/java/android/preference/PreferenceFragment.java index db04c7125adc..3e496b6eb550 100644 --- a/core/java/android/preference/PreferenceFragment.java +++ b/core/java/android/preference/PreferenceFragment.java @@ -23,14 +23,15 @@ import android.app.Fragment; import android.content.Intent; import android.content.SharedPreferences; import android.content.res.TypedArray; +import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; -import android.view.ViewGroup; import android.view.View.OnKeyListener; +import android.view.ViewGroup; import android.widget.ListView; /** @@ -178,6 +179,27 @@ public abstract class PreferenceFragment extends Fragment implements return inflater.inflate(mLayoutResId, container, false); } + @Override + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + TypedArray a = getActivity().obtainStyledAttributes(null, + com.android.internal.R.styleable.PreferenceFragment, + com.android.internal.R.attr.preferenceFragmentStyle, + 0); + + ListView lv = (ListView) view.findViewById(android.R.id.list); + if (lv != null) { + Drawable divider = + a.getDrawable(com.android.internal.R.styleable.PreferenceFragment_divider); + if (divider != null) { + lv.setDivider(divider); + } + } + + a.recycle(); + } + @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); diff --git a/core/java/android/preference/SwitchPreference.java b/core/java/android/preference/SwitchPreference.java index 9c3cefc33a7c..aa8674e2b608 100644 --- a/core/java/android/preference/SwitchPreference.java +++ b/core/java/android/preference/SwitchPreference.java @@ -122,7 +122,7 @@ public class SwitchPreference extends TwoStatePreference { protected void onBindView(View view) { super.onBindView(view); - View checkableView = view.findViewById(com.android.internal.R.id.switchWidget); + View checkableView = view.findViewById(com.android.internal.R.id.switch_widget); if (checkableView != null && checkableView instanceof Checkable) { if (checkableView instanceof Switch) { final Switch switchView = (Switch) checkableView; diff --git a/core/res/res/layout/preference_list_fragment.xml b/core/res/res/layout/preference_list_fragment.xml index f073c3379727..fc53a1a061b2 100644 --- a/core/res/res/layout/preference_list_fragment.xml +++ b/core/res/res/layout/preference_list_fragment.xml @@ -24,18 +24,23 @@ android:background="@android:color/transparent" android:layout_removeBorders="true"> - + android:layout_weight="1"> + + - + android:layout_weight="1"> + + + diff --git a/core/res/res/values/ids.xml b/core/res/res/values/ids.xml index 695dafac40b6..9d5e5ac7753b 100644 --- a/core/res/res/values/ids.xml +++ b/core/res/res/values/ids.xml @@ -23,12 +23,14 @@ + + @@ -48,6 +50,7 @@ + diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index 43a6acd9761a..54e43c8e3e7c 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -2681,6 +2681,7 @@ + @@ -2701,5 +2702,8 @@ + + + diff --git a/core/res/res/values/styles_material.xml b/core/res/res/values/styles_material.xml index 58640eb2ef55..4b2a4518b36c 100644 --- a/core/res/res/values/styles_material.xml +++ b/core/res/res/values/styles_material.xml @@ -40,6 +40,7 @@ please see styles_device_defaults.xml. @layout/preference_list_fragment_material @dimen/preference_fragment_padding_side_material @dimen/preference_fragment_padding_side_material + ?attr/listDivider