Fine tune Spinner style

- Make sure new style apply after T
- Adjust background paddinng

Bug: 221985589
Bug: 221689256
Test: robotest & visual
Change-Id: Ifb5116a2d325e58d96e3601ccf6630751404a4a7
This commit is contained in:
Edgar Wang
2022-04-06 20:02:02 +08:00
parent 8af79601d5
commit da5db6f9db
18 changed files with 104 additions and 138 deletions

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2018 The Android Open Source Project
Copyright (C) 2022 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.

View File

@@ -16,5 +16,6 @@
<resources>
<dimen name="spinner_height">36dp</dimen>
<dimen name="spinner_dropdown_height">48dp</dimen>
<dimen name="spinner_padding_top_or_bottom">8dp</dimen>
</resources>

View File

@@ -35,7 +35,7 @@
<item name="android:textColor">@color/settingslib_spinner_dropdown_color</item>
<item name="android:maxLines">1</item>
<item name="android:ellipsize">marquee</item>
<item name="android:minHeight">@dimen/spinner_height</item>
<item name="android:minHeight">@dimen/spinner_dropdown_height</item>
<item name="android:paddingStart">16dp</item>
<item name="android:paddingEnd">36dp</item>
<item name="android:paddingTop">@dimen/spinner_padding_top_or_bottom</item>

View File

@@ -1,28 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2018 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.
-->
<resources>
<style name="SettingsSpinnerTitleBar">
<item name="android:textAppearance">?android:attr/textAppearanceButton</item>
<item name="android:maxLines">1</item>
<item name="android:ellipsize">marquee</item>
<item name="android:paddingStart">16dp</item>
<item name="android:paddingEnd">36dp</item>
<item name="android:paddingTop">@dimen/spinner_padding_top_or_bottom</item>
<item name="android:paddingBottom">@dimen/spinner_padding_top_or_bottom</item>
</style>
</resources>

View File

@@ -41,7 +41,7 @@ public class SettingsSpinnerAdapter<T> extends ArrayAdapter<T> {
* access the current theme, resources, etc.
*/
public SettingsSpinnerAdapter(Context context) {
super(context, DEFAULT_RESOURCE);
super(context, getDefaultResource());
setDropDownViewResource(getDropdownResource());
mDefaultInflater = LayoutInflater.from(context);
@@ -51,7 +51,7 @@ public class SettingsSpinnerAdapter<T> extends ArrayAdapter<T> {
* 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(DEFAULT_RESOURCE, parent, false /* attachToRoot */);
return mDefaultInflater.inflate(getDefaultResource(), parent, false /* attachToRoot */);
}
/**
@@ -62,8 +62,12 @@ public class SettingsSpinnerAdapter<T> extends ArrayAdapter<T> {
return mDefaultInflater.inflate(getDropdownResource(), parent, false /* attachToRoot */);
}
private int getDropdownResource() {
return (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S)
private static int getDefaultResource() {
return (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
? DEFAULT_RESOURCE : android.R.layout.simple_spinner_dropdown_item;
}
private static int getDropdownResource() {
return (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
? DFAULT_DROPDOWN_RESOURCE : android.R.layout.simple_spinner_dropdown_item;
}
}

View File

@@ -1,43 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2022 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.
-->
<ripple
xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/settingslib_ripple_color">
<item android:id="@android:id/background">
<layer-list android:paddingMode="stack">
<item
android:top="8dp"
android:bottom="8dp">
<shape>
<corners android:radius="28dp"/>
<solid android:color="@android:color/system_accent1_100"/>
<size android:height="@dimen/settingslib_spinner_height"/>
</shape>
</item>
<item
android:gravity="center|end"
android:width="18dp"
android:height="18dp"
android:end="12dp"
android:drawable="@drawable/settingslib_arrow_drop_down"/>
</layer-list>
</item>
</ripple>

View File

@@ -16,33 +16,30 @@
-->
<ripple
xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/settingslib_ripple_color">
xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/settingslib_ripple_color">
<item android:id="@android:id/background">
<layer-list android:paddingMode="stack">
<layer-list
android:paddingMode="stack"
android:paddingStart="0dp"
android:paddingEnd="24dp">
<item
android:top="8dp"
android:bottom="8dp">
<shape>
<corners
android:radius="20dp"/>
<solid
android:color="?android:attr/colorPrimary"/>
<stroke
android:color="#1f000000"
android:width="1dp"/>
<size
android:height="32dp"/>
<corners android:radius="28dp"/>
<solid android:color="@android:color/system_accent1_100"/>
<size android:height="@dimen/settingslib_spinner_height"/>
</shape>
</item>
<item
android:gravity="center|end"
android:width="24dp"
android:height="24dp"
android:end="4dp"
android:width="18dp"
android:height="18dp"
android:end="12dp"
android:drawable="@drawable/settingslib_arrow_drop_down"/>
</layer-list>
</item>

View File

@@ -20,9 +20,17 @@
android:color="@color/settingslib_ripple_color">
<item android:id="@android:id/background">
<shape>
<corners android:radius="10dp"/>
<solid android:color="@android:color/system_accent2_100"/>
</shape>
<layer-list
android:paddingMode="stack"
android:paddingStart="0dp"
android:paddingEnd="12dp">
<item>
<shape>
<corners android:radius="10dp"/>
<solid android:color="@android:color/system_accent2_100"/>
</shape>
</item>
</layer-list>
</item>
</ripple>

View File

@@ -25,6 +25,4 @@
<dimen name="settingslib_listPreferredItemPaddingStart">24dp</dimen>
<!-- Right padding of the preference -->
<dimen name="settingslib_listPreferredItemPaddingEnd">24dp</dimen>
<dimen name="settingslib_spinner_height">36dp</dimen>
</resources>

View File

@@ -45,24 +45,4 @@
<item name="android:progressDrawable">@drawable/settingslib_progress_horizontal</item>
<item name="android:scaleY">0.5</item>
</style>
<style name="Spinner.SettingsLib"
parent="android:style/Widget.Material.Spinner">
<item name="android:background">@drawable/settingslib_spinner_background</item>
<item name="android:popupBackground">@drawable/settingslib_spinner_dropdown_background</item>
<item name="android:dropDownVerticalOffset">48dp</item>
<item name="android:layout_marginTop">16dp</item>
<item name="android:layout_marginBottom">8dp</item>
</style>
<style name="SpinnerItem.SettingsLib"
parent="@android:style/Widget.DeviceDefault.TextView.SpinnerItem">
<item name="android:textColor">@color/settingslib_spinner_dropdown_color</item>
</style>
<style name="SpinnerDropDownItem.SettingsLib"
parent="@android:style/Widget.Material.DropDownItem.Spinner">
<item name="android:textColor">@color/settingslib_spinner_dropdown_color</item>
</style>
</resources>

View File

@@ -17,7 +17,7 @@
<resources>
<!-- Only using in Settings application -->
<style name="Theme.SettingsBase" parent="@android:style/Theme.DeviceDefault.Settings" >
<style name="Theme.SettingsBase_v31" parent="@android:style/Theme.DeviceDefault.Settings" >
<item name="android:textAppearanceListItem">@style/TextAppearance.PreferenceTitle.SettingsLib</item>
<item name="android:listPreferredItemPaddingStart">@dimen/settingslib_listPreferredItemPaddingStart</item>
<item name="android:listPreferredItemPaddingLeft">@dimen/settingslib_listPreferredItemPaddingStart</item>
@@ -26,11 +26,10 @@
<item name="preferenceTheme">@style/PreferenceTheme.SettingsLib</item>
<item name="android:switchStyle">@style/Switch.SettingsLib</item>
<item name="android:progressBarStyleHorizontal">@style/HorizontalProgressBar.SettingsLib</item>
<item name="android:spinnerStyle">@style/Spinner.SettingsLib</item>
<item name="android:spinnerItemStyle">@style/SpinnerItem.SettingsLib</item>
<item name="android:spinnerDropDownItemStyle">@style/SpinnerDropDownItem.SettingsLib</item>
</style>
<style name="Theme.SettingsBase" parent="Theme.SettingsBase_v31" />
<!-- Using in SubSettings page including injected settings page -->
<style name="Theme.SubSettingsBase" parent="Theme.SettingsBase">
<!-- Suppress the built-in action bar -->

View File

@@ -15,12 +15,6 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:viewportWidth="24"
android:viewportHeight="24"
android:width="24dp"
android:height="24dp">
<path
android:pathData="M7 10l5 5 5 -5z"
android:fillColor="?android:attr/textColorPrimary"/>
</vector>
<resources>
<dimen name="settingslib_spinner_height">36dp</dimen>
</resources>

View File

@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2022 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.
-->
<resources>
<style name="Spinner.SettingsLib"
parent="android:style/Widget.Material.Spinner">
<item name="android:background">@drawable/settingslib_spinner_background</item>
<item name="android:popupBackground">@drawable/settingslib_spinner_dropdown_background
</item>
<item name="android:dropDownVerticalOffset">48dp</item>
<item name="android:layout_marginTop">16dp</item>
<item name="android:layout_marginBottom">8dp</item>
</style>
<style name="SpinnerItem.SettingsLib"
parent="@android:style/Widget.DeviceDefault.TextView.SpinnerItem">
<item name="android:textColor">@color/settingslib_spinner_dropdown_color</item>
<item name="android:paddingStart">16dp</item>
</style>
<style name="SpinnerDropDownItem.SettingsLib"
parent="@android:style/Widget.Material.DropDownItem.Spinner">
<item name="android:textColor">@color/settingslib_spinner_dropdown_color</item>
<item name="android:paddingStart">16dp</item>
</style>
</resources>

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2022 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.
-->
<resources>
<style name="Theme.SettingsBase" parent="Theme.SettingsBase_v31" >
<item name="android:spinnerStyle">@style/Spinner.SettingsLib</item>
<item name="android:spinnerItemStyle">@style/SpinnerItem.SettingsLib</item>
<item name="android:spinnerDropDownItemStyle">@style/SpinnerDropDownItem.SettingsLib</item>
</style>
</resources>

View File

@@ -26,10 +26,4 @@
<style name="TextAppearance.CategoryTitle.SettingsLib"
parent="@android:style/TextAppearance.DeviceDefault.Medium">
</style>
<style name="Spinner.SettingsLib"
parent="android:style/Widget.Material.Spinner">
<item name="android:background">@drawable/settingslib_spinner_background</item>
<item name="android:dropDownVerticalOffset">48dp</item>
</style>
</resources>

View File

@@ -19,7 +19,6 @@
<!-- Only using in Settings application -->
<style name="Theme.SettingsBase" parent="@android:style/Theme.DeviceDefault.Settings">
<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
<item name="android:spinnerStyle">@style/Spinner.SettingsLib</item>
</style>
<!-- Using in SubSettings page including injected settings page -->