From dd1064d169706768b2c0fd31990909655bd6b443 Mon Sep 17 00:00:00 2001 From: David Liu Date: Thu, 20 Mar 2025 21:12:56 -0700 Subject: [Settingslib] Update SettingsSpinner with expressive styles - Support Large and Full-width spinner styles - Update expressive styles Bug: 394697765, 396786547 Test: manul Flag: com.android.settingslib.widget.theme.flags.is_expressive_design_enabled Change-Id: I5ce72d2551c998d56ae996765cb1683f9ca3f39f --- .../res/layout-v33/settings_spinner_view.xml | 2 + ...settings_expressive_spinner_preference_full.xml | 27 ++++++++++ .../settings_expressive_spinner_view_full.xml | 22 ++++++++ .../settings_expressive_spinner_view_large.xml | 22 ++++++++ .../settings_expressvie_spinner_dropdown_view.xml | 21 ++++++++ .../settings_expressvie_spinner_view.xml | 22 ++++++++ .../SettingsSpinner/res/values-v33/styles.xml | 2 + .../SettingsSpinner/res/values-v36/attr.xml | 23 +++++++++ .../SettingsSpinner/res/values-v36/styles.xml | 42 ++++++++++++++++ .../settingslib/widget/SettingsSpinnerAdapter.java | 58 ++++++++++++++++++---- .../widget/SettingsSpinnerPreference.java | 52 ++++++++++++++----- .../settingslib_spinner_dropdown_item_bg_color.xml | 23 +++++++++ .../settingslib_expressive_spinner_background.xml | 53 ++++++++++++++++++++ ...slib_expressive_spinner_dropdown_background.xml | 35 +++++++++++++ .../res/values-v36/styles_expressive.xml | 9 +++- .../res/values-v36/themes_expressive.xml | 8 +-- 16 files changed, 395 insertions(+), 26 deletions(-) create mode 100644 packages/SettingsLib/SettingsSpinner/res/layout-v36/settings_expressive_spinner_preference_full.xml create mode 100644 packages/SettingsLib/SettingsSpinner/res/layout-v36/settings_expressive_spinner_view_full.xml create mode 100644 packages/SettingsLib/SettingsSpinner/res/layout-v36/settings_expressive_spinner_view_large.xml create mode 100644 packages/SettingsLib/SettingsSpinner/res/layout-v36/settings_expressvie_spinner_dropdown_view.xml create mode 100644 packages/SettingsLib/SettingsSpinner/res/layout-v36/settings_expressvie_spinner_view.xml create mode 100644 packages/SettingsLib/SettingsSpinner/res/values-v36/attr.xml create mode 100644 packages/SettingsLib/SettingsSpinner/res/values-v36/styles.xml create mode 100644 packages/SettingsLib/SettingsTheme/res/color-v36/settingslib_spinner_dropdown_item_bg_color.xml create mode 100644 packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_expressive_spinner_background.xml create mode 100644 packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_expressive_spinner_dropdown_background.xml (limited to 'packages') diff --git a/packages/SettingsLib/SettingsSpinner/res/layout-v33/settings_spinner_view.xml b/packages/SettingsLib/SettingsSpinner/res/layout-v33/settings_spinner_view.xml index 1d0c9b941881..3c379bf0162d 100644 --- a/packages/SettingsLib/SettingsSpinner/res/layout-v33/settings_spinner_view.xml +++ b/packages/SettingsLib/SettingsSpinner/res/layout-v33/settings_spinner_view.xml @@ -18,6 +18,8 @@ diff --git a/packages/SettingsLib/SettingsSpinner/res/layout-v36/settings_expressive_spinner_preference_full.xml b/packages/SettingsLib/SettingsSpinner/res/layout-v36/settings_expressive_spinner_preference_full.xml new file mode 100644 index 000000000000..6d1057c8780b --- /dev/null +++ b/packages/SettingsLib/SettingsSpinner/res/layout-v36/settings_expressive_spinner_preference_full.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/packages/SettingsLib/SettingsSpinner/res/layout-v36/settings_expressive_spinner_view_full.xml b/packages/SettingsLib/SettingsSpinner/res/layout-v36/settings_expressive_spinner_view_full.xml new file mode 100644 index 000000000000..d3832f786ccb --- /dev/null +++ b/packages/SettingsLib/SettingsSpinner/res/layout-v36/settings_expressive_spinner_view_full.xml @@ -0,0 +1,22 @@ + + + diff --git a/packages/SettingsLib/SettingsSpinner/res/layout-v36/settings_expressive_spinner_view_large.xml b/packages/SettingsLib/SettingsSpinner/res/layout-v36/settings_expressive_spinner_view_large.xml new file mode 100644 index 000000000000..3e7f0fa7ca4f --- /dev/null +++ b/packages/SettingsLib/SettingsSpinner/res/layout-v36/settings_expressive_spinner_view_large.xml @@ -0,0 +1,22 @@ + + + diff --git a/packages/SettingsLib/SettingsSpinner/res/layout-v36/settings_expressvie_spinner_dropdown_view.xml b/packages/SettingsLib/SettingsSpinner/res/layout-v36/settings_expressvie_spinner_dropdown_view.xml new file mode 100644 index 000000000000..9307b296379d --- /dev/null +++ b/packages/SettingsLib/SettingsSpinner/res/layout-v36/settings_expressvie_spinner_dropdown_view.xml @@ -0,0 +1,21 @@ + + + diff --git a/packages/SettingsLib/SettingsSpinner/res/layout-v36/settings_expressvie_spinner_view.xml b/packages/SettingsLib/SettingsSpinner/res/layout-v36/settings_expressvie_spinner_view.xml new file mode 100644 index 000000000000..e300099ee298 --- /dev/null +++ b/packages/SettingsLib/SettingsSpinner/res/layout-v36/settings_expressvie_spinner_view.xml @@ -0,0 +1,22 @@ + + + diff --git a/packages/SettingsLib/SettingsSpinner/res/values-v33/styles.xml b/packages/SettingsLib/SettingsSpinner/res/values-v33/styles.xml index 6e26ae180685..2d720d210def 100644 --- a/packages/SettingsLib/SettingsSpinner/res/values-v33/styles.xml +++ b/packages/SettingsLib/SettingsSpinner/res/values-v33/styles.xml @@ -27,6 +27,7 @@ 36dp @dimen/spinner_padding_top_or_bottom @dimen/spinner_padding_top_or_bottom + true diff --git a/packages/SettingsLib/SettingsSpinner/res/values-v36/attr.xml b/packages/SettingsLib/SettingsSpinner/res/values-v36/attr.xml new file mode 100644 index 000000000000..d40cd565e8ce --- /dev/null +++ b/packages/SettingsLib/SettingsSpinner/res/values-v36/attr.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + diff --git a/packages/SettingsLib/SettingsSpinner/res/values-v36/styles.xml b/packages/SettingsLib/SettingsSpinner/res/values-v36/styles.xml new file mode 100644 index 000000000000..bde3f0ec1203 --- /dev/null +++ b/packages/SettingsLib/SettingsSpinner/res/values-v36/styles.xml @@ -0,0 +1,42 @@ + + + + + + + diff --git a/packages/SettingsLib/SettingsSpinner/src/com/android/settingslib/widget/SettingsSpinnerAdapter.java b/packages/SettingsLib/SettingsSpinner/src/com/android/settingslib/widget/SettingsSpinnerAdapter.java index f33cacd36c6d..40a41f182cbb 100644 --- a/packages/SettingsLib/SettingsSpinner/src/com/android/settingslib/widget/SettingsSpinnerAdapter.java +++ b/packages/SettingsLib/SettingsSpinner/src/com/android/settingslib/widget/SettingsSpinnerAdapter.java @@ -22,7 +22,9 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; +import com.android.settingslib.widget.SettingsSpinnerPreference.Style; import com.android.settingslib.widget.spinner.R; + /** * An ArrayAdapter which was used by Spinner with settings style. * @param the data type to be loaded. @@ -30,7 +32,11 @@ import com.android.settingslib.widget.spinner.R; public class SettingsSpinnerAdapter extends ArrayAdapter { private static final int DEFAULT_RESOURCE = R.layout.settings_spinner_view; - private static final int DFAULT_DROPDOWN_RESOURCE = R.layout.settings_spinner_dropdown_view; + private static final int DEFAULT_DROPDOWN_RESOURCE = R.layout.settings_spinner_dropdown_view; + private static final int DEFAULT_EXPRESSIVE_RESOURCE = + R.layout.settings_expressvie_spinner_view; + private static final int DEFAULT_EXPRESSIVE_DROPDOWN_RESOURCE = + R.layout.settings_expressvie_spinner_dropdown_view; private final LayoutInflater mDefaultInflater; /** @@ -41,17 +47,45 @@ public class SettingsSpinnerAdapter extends ArrayAdapter { * access the current theme, resources, etc. */ public SettingsSpinnerAdapter(Context context) { - super(context, getDefaultResource()); + super(context, getDefaultResource(context, Style.NORMAL)); + + setDropDownViewResource(getDropdownResource(context)); + mDefaultInflater = LayoutInflater.from(context); + } - setDropDownViewResource(getDropdownResource()); + public SettingsSpinnerAdapter(Context context, SettingsSpinnerPreference.Style style) { + super(context, getDefaultResource(context, style)); + + setDropDownViewResource(getDropdownResource(context)); mDefaultInflater = LayoutInflater.from(context); } + private static int getDefaultResourceWithStyle(Style style) { + switch (style) { + case NORMAL -> { + return DEFAULT_EXPRESSIVE_RESOURCE; + } + case LARGE -> { + return R.layout.settings_expressive_spinner_view_large; + } + case FULL_WIDTH -> { + return R.layout.settings_expressive_spinner_view_full; + } + case OUTLINED -> { + return DEFAULT_RESOURCE; + } + default -> { + return DEFAULT_RESOURCE; + } + } + } + /** * In overridded {@link #getView(int, View, ViewGroup)}, use this method to get default view. */ public View getDefaultView(int position, View convertView, ViewGroup parent) { - return mDefaultInflater.inflate(getDefaultResource(), parent, false /* attachToRoot */); + return mDefaultInflater.inflate( + getDefaultResource(getContext(), Style.NORMAL), parent, false /* attachToRoot */); } /** @@ -59,15 +93,21 @@ public class SettingsSpinnerAdapter extends ArrayAdapter { * drop down view. */ public View getDefaultDropDownView(int position, View convertView, ViewGroup parent) { - return mDefaultInflater.inflate(getDropdownResource(), parent, false /* attachToRoot */); + return mDefaultInflater.inflate( + getDropdownResource(getContext()), parent, false /* attachToRoot */); } - private static int getDefaultResource() { + private static int getDefaultResource(Context context, Style style) { + int resId = SettingsThemeHelper.isExpressiveTheme(context) + ? getDefaultResourceWithStyle(style) : DEFAULT_DROPDOWN_RESOURCE; return (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) - ? DEFAULT_RESOURCE : android.R.layout.simple_spinner_dropdown_item; + ? resId : android.R.layout.simple_spinner_dropdown_item; } - private static int getDropdownResource() { + + private static int getDropdownResource(Context context) { + int resId = SettingsThemeHelper.isExpressiveTheme(context) + ? DEFAULT_EXPRESSIVE_DROPDOWN_RESOURCE : DEFAULT_DROPDOWN_RESOURCE; return (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) - ? DFAULT_DROPDOWN_RESOURCE : android.R.layout.simple_spinner_dropdown_item; + ? resId : android.R.layout.simple_spinner_dropdown_item; } } diff --git a/packages/SettingsLib/SettingsSpinner/src/com/android/settingslib/widget/SettingsSpinnerPreference.java b/packages/SettingsLib/SettingsSpinner/src/com/android/settingslib/widget/SettingsSpinnerPreference.java index 1170f1e7c695..291b1fd76d5a 100644 --- a/packages/SettingsLib/SettingsSpinner/src/com/android/settingslib/widget/SettingsSpinnerPreference.java +++ b/packages/SettingsLib/SettingsSpinner/src/com/android/settingslib/widget/SettingsSpinnerPreference.java @@ -17,12 +17,15 @@ package com.android.settingslib.widget; import android.content.Context; +import android.content.res.TypedArray; import android.util.AttributeSet; import android.view.View; import android.view.accessibility.AccessibilityEvent; import android.widget.AdapterView; import android.widget.Spinner; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.preference.Preference; import androidx.preference.Preference.OnPreferenceClickListener; import androidx.preference.PreferenceViewHolder; @@ -44,29 +47,28 @@ public class SettingsSpinnerPreference extends Preference /** * Perform inflation from XML and apply a class-specific base style. * - * @param context The {@link Context} this is associated with, through which it can - * access the current theme, resources, {@link SharedPreferences}, etc. - * @param attrs The attributes of the XML tag that is inflating the preference + * @param context The {@link Context} this is associated with, through which it can access the + * current theme, resources, {@link SharedPreferences}, etc. + * @param attrs The attributes of the XML tag that is inflating the preference * @param defStyle An attribute in the current theme that contains a reference to a style - * resource that supplies default values for the view. Can be 0 to not - * look for defaults. + * resource that supplies default values for the view. Can be 0 to not look for defaults. */ public SettingsSpinnerPreference(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); - setLayoutResource(R.layout.settings_spinner_preference); + initAttributes(context, attrs, defStyle); setOnPreferenceClickListener(this); } /** * Perform inflation from XML and apply a class-specific base style. * - * @param context The {@link Context} this is associated with, through which it can - * access the current theme, resources, {@link SharedPreferences}, etc. - * @param attrs The attributes of the XML tag that is inflating the preference + * @param context The {@link Context} this is associated with, through which it can access the + * current theme, resources, {@link SharedPreferences}, etc. + * @param attrs The attributes of the XML tag that is inflating the preference */ - public SettingsSpinnerPreference(Context context, AttributeSet attrs) { + public SettingsSpinnerPreference(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); - setLayoutResource(R.layout.settings_spinner_preference); + initAttributes(context, attrs, 0); setOnPreferenceClickListener(this); } @@ -75,8 +77,31 @@ public class SettingsSpinnerPreference extends Preference * * @param context The Context this is associated with. */ - public SettingsSpinnerPreference(Context context) { + public SettingsSpinnerPreference(@NonNull Context context) { this(context, null); + initAttributes(context, null, 0); + } + + public enum Style { + NORMAL, + LARGE, + FULL_WIDTH, + OUTLINED, + } + + private void initAttributes( + @NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + int layoutRes = R.layout.settings_spinner_preference; + try (TypedArray a = + context.obtainStyledAttributes( + attrs, R.styleable.SettingsSpinnerPreference, defStyleAttr, 0)) { + int style = a.getInteger(R.styleable.SettingsSpinnerPreference_style, 0); + switch (style) { + case 2 -> layoutRes = R.layout.settings_expressive_spinner_preference_full; + default -> layoutRes = R.layout.settings_spinner_preference; + } + } + setLayoutResource(layoutRes); } @Override @@ -115,6 +140,9 @@ public class SettingsSpinnerPreference extends Preference public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); final Spinner spinner = (Spinner) holder.findViewById(R.id.spinner); + if (spinner == null) { + return; + } spinner.setAdapter(mAdapter); spinner.setSelection(mPosition); spinner.setOnItemSelectedListener(mOnSelectedListener); diff --git a/packages/SettingsLib/SettingsTheme/res/color-v36/settingslib_spinner_dropdown_item_bg_color.xml b/packages/SettingsLib/SettingsTheme/res/color-v36/settingslib_spinner_dropdown_item_bg_color.xml new file mode 100644 index 000000000000..445378b9bc5d --- /dev/null +++ b/packages/SettingsLib/SettingsTheme/res/color-v36/settingslib_spinner_dropdown_item_bg_color.xml @@ -0,0 +1,23 @@ + + + + + + + + + diff --git a/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_expressive_spinner_background.xml b/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_expressive_spinner_background.xml new file mode 100644 index 000000000000..139418b38e03 --- /dev/null +++ b/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_expressive_spinner_background.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_expressive_spinner_dropdown_background.xml b/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_expressive_spinner_dropdown_background.xml new file mode 100644 index 000000000000..84efe952d702 --- /dev/null +++ b/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_expressive_spinner_dropdown_background.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + diff --git a/packages/SettingsLib/SettingsTheme/res/values-v36/styles_expressive.xml b/packages/SettingsLib/SettingsTheme/res/values-v36/styles_expressive.xml index de48f99215fb..94cad47c4fd0 100644 --- a/packages/SettingsLib/SettingsTheme/res/values-v36/styles_expressive.xml +++ b/packages/SettingsLib/SettingsTheme/res/values-v36/styles_expressive.xml @@ -31,6 +31,13 @@ @color/settingslib_expressive_color_main_switch_track + + - \ No newline at end of file + diff --git a/packages/SettingsLib/SettingsTheme/res/values-v36/themes_expressive.xml b/packages/SettingsLib/SettingsTheme/res/values-v36/themes_expressive.xml index 5173ebeaa9a1..ffbc65cc622b 100644 --- a/packages/SettingsLib/SettingsTheme/res/values-v36/themes_expressive.xml +++ b/packages/SettingsLib/SettingsTheme/res/values-v36/themes_expressive.xml @@ -32,9 +32,9 @@ @style/PreferenceTheme.SettingsLib.Expressive - + @style/SettingslibSpinnerStyle.Expressive + false @@ -66,4 +66,4 @@ @style/Widget.SettingsLib.DialogButton.Outline @style/Widget.SettingsLib.DialogButton - \ No newline at end of file + -- cgit v1.2.3-59-g8ed1b From 6b896df3fceac3de65cd07b134b5625e3e59b5de Mon Sep 17 00:00:00 2001 From: David Liu Date: Thu, 20 Mar 2025 21:37:59 -0700 Subject: [Settingslib] Add SettingsSpinner item selected highlight Bug: 394697765, 396786547 Test: manul Flag: com.android.settingslib.widget.theme.flags.is_expressive_design_enabled Change-Id: I319c254d47ad37ffbad65182daf12fcf4b71883c --- ...ings_expressive_spinner_dropdown_background.xml | 21 ++++++++++++++ ...s_expressive_spinner_dropdown_item_selected.xml | 28 ++++++++++++++++++ .../settings_expressvie_spinner_dropdown_view.xml | 27 ++++++++++++++---- .../SettingsSpinner/res/values-v36/styles.xml | 21 ++++++++++---- .../settingslib/widget/SettingsSpinnerAdapter.java | 28 ++++++++++++++++++ .../widget/SettingsSpinnerPreference.java | 33 ++++++++++++---------- .../settingslib_spinner_dropdown_item_bg_color.xml | 23 --------------- ...slib_expressive_spinner_dropdown_background.xml | 5 +++- 8 files changed, 135 insertions(+), 51 deletions(-) create mode 100644 packages/SettingsLib/SettingsSpinner/res/drawable-v36/settings_expressive_spinner_dropdown_background.xml create mode 100644 packages/SettingsLib/SettingsSpinner/res/drawable-v36/settings_expressive_spinner_dropdown_item_selected.xml delete mode 100644 packages/SettingsLib/SettingsTheme/res/color-v36/settingslib_spinner_dropdown_item_bg_color.xml (limited to 'packages') diff --git a/packages/SettingsLib/SettingsSpinner/res/drawable-v36/settings_expressive_spinner_dropdown_background.xml b/packages/SettingsLib/SettingsSpinner/res/drawable-v36/settings_expressive_spinner_dropdown_background.xml new file mode 100644 index 000000000000..f29f3ae79fa6 --- /dev/null +++ b/packages/SettingsLib/SettingsSpinner/res/drawable-v36/settings_expressive_spinner_dropdown_background.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/packages/SettingsLib/SettingsSpinner/res/drawable-v36/settings_expressive_spinner_dropdown_item_selected.xml b/packages/SettingsLib/SettingsSpinner/res/drawable-v36/settings_expressive_spinner_dropdown_item_selected.xml new file mode 100644 index 000000000000..5da3f7172582 --- /dev/null +++ b/packages/SettingsLib/SettingsSpinner/res/drawable-v36/settings_expressive_spinner_dropdown_item_selected.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + diff --git a/packages/SettingsLib/SettingsSpinner/res/layout-v36/settings_expressvie_spinner_dropdown_view.xml b/packages/SettingsLib/SettingsSpinner/res/layout-v36/settings_expressvie_spinner_dropdown_view.xml index 9307b296379d..acf2a0dd5858 100644 --- a/packages/SettingsLib/SettingsSpinner/res/layout-v36/settings_expressvie_spinner_dropdown_view.xml +++ b/packages/SettingsLib/SettingsSpinner/res/layout-v36/settings_expressvie_spinner_dropdown_view.xml @@ -11,11 +11,26 @@ See the License for the specific language governing permissions and limitations under the License. --> - + style="@style/SettingsSpinnerDropdown.Expressive"> + + + + diff --git a/packages/SettingsLib/SettingsSpinner/res/values-v36/styles.xml b/packages/SettingsLib/SettingsSpinner/res/values-v36/styles.xml index bde3f0ec1203..219788733eca 100644 --- a/packages/SettingsLib/SettingsSpinner/res/values-v36/styles.xml +++ b/packages/SettingsLib/SettingsSpinner/res/values-v36/styles.xml @@ -1,16 +1,20 @@ + + + + + diff --git a/packages/SettingsLib/SettingsSpinner/src/com/android/settingslib/widget/SettingsSpinnerAdapter.java b/packages/SettingsLib/SettingsSpinner/src/com/android/settingslib/widget/SettingsSpinnerAdapter.java index 40a41f182cbb..67bc82ccf100 100644 --- a/packages/SettingsLib/SettingsSpinner/src/com/android/settingslib/widget/SettingsSpinnerAdapter.java +++ b/packages/SettingsLib/SettingsSpinner/src/com/android/settingslib/widget/SettingsSpinnerAdapter.java @@ -22,6 +22,10 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; +import android.widget.ImageView; +import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.android.settingslib.widget.SettingsSpinnerPreference.Style; import com.android.settingslib.widget.spinner.R; @@ -38,6 +42,7 @@ public class SettingsSpinnerAdapter extends ArrayAdapter { private static final int DEFAULT_EXPRESSIVE_DROPDOWN_RESOURCE = R.layout.settings_expressvie_spinner_dropdown_view; private final LayoutInflater mDefaultInflater; + private int mSelectedPosition = -1; /** * Constructs a new SettingsSpinnerAdapter with the given context. @@ -53,6 +58,29 @@ public class SettingsSpinnerAdapter extends ArrayAdapter { mDefaultInflater = LayoutInflater.from(context); } + @Override + public View getDropDownView( + int position, @Nullable View convertView, @NonNull ViewGroup parent) { + View view; + if (convertView == null) { + view = + mDefaultInflater.inflate( + getDropdownResource(getContext()), parent, false /* attachToRoot */); + } else { + view = convertView; + } + TextView textView = view.findViewById(android.R.id.text1); + ImageView iconView = view.findViewById(android.R.id.icon); + iconView.setVisibility((position == mSelectedPosition) ? View.VISIBLE : View.GONE); + String item = (String) getItem(position); + textView.setText(item); + return view; + } + + public void setSelectedPosition(int pos) { + mSelectedPosition = pos; + } + public SettingsSpinnerAdapter(Context context, SettingsSpinnerPreference.Style style) { super(context, getDefaultResource(context, style)); diff --git a/packages/SettingsLib/SettingsSpinner/src/com/android/settingslib/widget/SettingsSpinnerPreference.java b/packages/SettingsLib/SettingsSpinner/src/com/android/settingslib/widget/SettingsSpinnerPreference.java index 291b1fd76d5a..096cec0d58a7 100644 --- a/packages/SettingsLib/SettingsSpinner/src/com/android/settingslib/widget/SettingsSpinnerPreference.java +++ b/packages/SettingsLib/SettingsSpinner/src/com/android/settingslib/widget/SettingsSpinnerPreference.java @@ -143,6 +143,7 @@ public class SettingsSpinnerPreference extends Preference if (spinner == null) { return; } + mAdapter.setSelectedPosition(mPosition); spinner.setAdapter(mAdapter); spinner.setSelection(mPosition); spinner.setOnItemSelectedListener(mOnSelectedListener); @@ -168,20 +169,22 @@ public class SettingsSpinnerPreference extends Preference private final AdapterView.OnItemSelectedListener mOnSelectedListener = new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView parent, View view, int position, long id) { - if (mPosition == position) return; - mPosition = position; - if (mListener != null) { - mListener.onItemSelected(parent, view, position, id); - } - } + @Override + public void onItemSelected( + AdapterView parent, View view, int position, long id) { + if (mPosition == position) return; + mPosition = position; + mAdapter.setSelectedPosition(mPosition); + if (mListener != null) { + mListener.onItemSelected(parent, view, position, id); + } + } - @Override - public void onNothingSelected(AdapterView parent) { - if (mListener != null) { - mListener.onNothingSelected(parent); - } - } - }; + @Override + public void onNothingSelected(AdapterView parent) { + if (mListener != null) { + mListener.onNothingSelected(parent); + } + } + }; } diff --git a/packages/SettingsLib/SettingsTheme/res/color-v36/settingslib_spinner_dropdown_item_bg_color.xml b/packages/SettingsLib/SettingsTheme/res/color-v36/settingslib_spinner_dropdown_item_bg_color.xml deleted file mode 100644 index 445378b9bc5d..000000000000 --- a/packages/SettingsLib/SettingsTheme/res/color-v36/settingslib_spinner_dropdown_item_bg_color.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - diff --git a/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_expressive_spinner_dropdown_background.xml b/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_expressive_spinner_dropdown_background.xml index 84efe952d702..ac38c3e9223b 100644 --- a/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_expressive_spinner_dropdown_background.xml +++ b/packages/SettingsLib/SettingsTheme/res/drawable-v36/settingslib_expressive_spinner_dropdown_background.xml @@ -22,7 +22,10 @@ + android:paddingStart="@dimen/settingslib_expressive_space_extrasmall4" + android:paddingEnd="@dimen/settingslib_expressive_space_extrasmall4" + android:paddingTop="@dimen/settingslib_expressive_space_extrasmall4" + android:paddingBottom="@dimen/settingslib_expressive_space_extrasmall4"> -- cgit v1.2.3-59-g8ed1b