Clean up styles file for Chassis.
-Inline "layout" attributes into layout files.
-Inline non OEM customizable one-off attributes.
-Extend DeviceDefault where possible.
-Style namespace (similar to AppCompat).
Bug: 140443143
Test: manual with Paint Booth and Dialer
Change-Id: I8e3d5bbea5bdce8bd7075885dac433059c449ffd
diff --git a/car-chassis-lib/res/layout-port/chassis_toolbar.xml b/car-chassis-lib/res/layout-port/chassis_toolbar.xml
index b69ebd1..9d86e34 100644
--- a/car-chassis-lib/res/layout-port/chassis_toolbar.xml
+++ b/car-chassis-lib/res/layout-port/chassis_toolbar.xml
@@ -18,8 +18,7 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- style="@style/ChassisToolbarContainerStyle">
+ android:layout_height="wrap_content">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/row_separator_guideline"
@@ -28,32 +27,43 @@
android:orientation="horizontal"
app:layout_constraintGuide_begin="@dimen/chassis_toolbar_first_row_height"/>
+ <!-- can't use 0dp for layout_height or the constraintlayout effect kicks in -->
<View
android:id="@+id/row_separator"
- style="@style/ChassisToolbarRowSeparatorStyle"
+ android:layout_width="match_parent"
+ android:layout_height="0.01dp"
app:layout_constraintTop_toBottomOf="@id/row_separator_guideline"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
<FrameLayout
android:id="@+id/nav_icon_container"
- style="@style/ChassisToolbarNavIconContainerStyle"
+ android:layout_width="@dimen/chassis_toolbar_nav_button_width"
+ android:layout_height="0dp"
+ android:background="?android:attr/selectableItemBackground"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/row_separator"
app:layout_constraintStart_toStartOf="parent">
<ImageView
android:id="@+id/nav_icon"
- style="@style/ChassisToolbarNavIconStyle"/>
+ android:layout_width="@dimen/chassis_toolbar_icon_size"
+ android:layout_height="@dimen/chassis_toolbar_icon_size"
+ android:layout_gravity="center"
+ android:scaleType="fitXY"/>
<ImageView
android:id="@+id/logo"
- style="@style/ChassisToolbarLogoStyle"/>
+ android:layout_width="@dimen/chassis_toolbar_icon_size"
+ android:layout_height="@dimen/chassis_toolbar_icon_size"
+ android:layout_gravity="center"
+ android:scaleType="fitXY"/>
</FrameLayout>
<TextView
android:id="@+id/title"
android:layout_width="0dp"
android:layout_height="wrap_content"
- style="@style/ChassisToolbarTitleStyle"
+ android:layout_marginStart="@dimen/chassis_toolbar_title_margin_start"
+ style="@style/TextAppearance.Chassis.Widget.Toolbar.Title"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/row_separator"
app:layout_constraintStart_toEndOf="@id/nav_icon_container"
@@ -115,9 +125,11 @@
app:layout_constraintTop_toBottomOf="@id/row_separator"
app:layout_constraintBottom_toTopOf="@id/bottom_styleable"/>
+ <!-- can't use 0dp for layout_height or the constraintlayout effect kicks in -->
<View
android:id="@+id/bottom_styleable"
- style="@style/ChassisToolbarBottomStyle"
+ android:layout_width="match_parent"
+ android:layout_height="0.01dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
diff --git a/car-chassis-lib/res/layout/chassis_tab_item.xml b/car-chassis-lib/res/layout/chassis_tab_item.xml
index dd2c97f..1648fff 100644
--- a/car-chassis-lib/res/layout/chassis_tab_item.xml
+++ b/car-chassis-lib/res/layout/chassis_tab_item.xml
@@ -19,8 +19,15 @@
xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
android:id="@+id/chassis_tab_item_icon"
- style="@style/ChassisTabItemIcon"/>
+ android:layout_width="@dimen/chassis_tab_icon_width"
+ android:layout_height="@dimen/chassis_tab_icon_height"
+ android:scaleType="fitCenter"
+ android:tint="@color/chassis_tab_item_selector"/>
<TextView
android:id="@+id/chassis_tab_item_text"
- style="@style/ChassisTabItemText"/>
+ android:layout_width="@dimen/chassis_tab_text_width"
+ android:layout_height="wrap_content"
+ android:singleLine="true"
+ android:gravity="center"
+ android:textAppearance="@style/TextAppearance.Chassis.Widget.Toolbar.Tab"/>
</merge>
diff --git a/car-chassis-lib/res/layout/chassis_toolbar.xml b/car-chassis-lib/res/layout/chassis_toolbar.xml
index d5baa20..e8b09cb 100644
--- a/car-chassis-lib/res/layout/chassis_toolbar.xml
+++ b/car-chassis-lib/res/layout/chassis_toolbar.xml
@@ -18,28 +18,37 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
- android:layout_height="@dimen/chassis_toolbar_first_row_height"
- style="@style/ChassisToolbarContainerStyle">
+ android:layout_height="@dimen/chassis_toolbar_first_row_height">
<FrameLayout
android:id="@+id/nav_icon_container"
- style="@style/ChassisToolbarNavIconContainerStyle"
+ android:layout_width="@dimen/chassis_toolbar_nav_button_width"
+ android:layout_height="0dp"
+ android:background="?android:attr/selectableItemBackground"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@+id/bottom_styleable"
app:layout_constraintStart_toStartOf="parent">
<ImageView
android:id="@+id/nav_icon"
- style="@style/ChassisToolbarNavIconStyle"/>
+ android:layout_width="@dimen/chassis_toolbar_icon_size"
+ android:layout_height="@dimen/chassis_toolbar_icon_size"
+ android:layout_gravity="center"
+ android:scaleType="fitXY"
+ style="@style/Widget.Chassis.Toolbar.NavIcon"/>
<ImageView
android:id="@+id/logo"
- style="@style/ChassisToolbarLogoStyle"/>
+ android:layout_width="@dimen/chassis_toolbar_icon_size"
+ android:layout_height="@dimen/chassis_toolbar_icon_size"
+ android:layout_gravity="center"
+ android:scaleType="fitXY"/>
</FrameLayout>
<TextView
android:id="@+id/title"
android:layout_width="0dp"
android:layout_height="wrap_content"
- style="@style/ChassisToolbarTitleStyle"
+ android:layout_marginStart="@dimen/chassis_toolbar_title_margin_start"
+ style="@style/TextAppearance.Chassis.Widget.Toolbar.Title"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@+id/bottom_styleable"
app:layout_constraintStart_toEndOf="@+id/nav_icon_container"
@@ -105,9 +114,11 @@
app:layout_constraintStart_toEndOf="@+id/nav_icon_container"
app:layout_constraintEnd_toStartOf="@+id/menu_items_container"/>
+ <!-- can't use 0dp for layout_height or the constraintlayout effect kicks in -->
<View
android:id="@+id/bottom_styleable"
- style="@style/ChassisToolbarBottomStyle"
+ android:layout_width="match_parent"
+ android:layout_height="0.01dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
diff --git a/car-chassis-lib/res/layout/chassis_toolbar_menu_item_text.xml b/car-chassis-lib/res/layout/chassis_toolbar_menu_item_text.xml
index cc71e12..fc2d6e8 100644
--- a/car-chassis-lib/res/layout/chassis_toolbar_menu_item_text.xml
+++ b/car-chassis-lib/res/layout/chassis_toolbar_menu_item_text.xml
@@ -17,7 +17,7 @@
<Button
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/chassis_toolbar_menu_item_text"
- style="@style/ChassisToolbarTextButtonStyle"
+ style="@style/Widget.Chassis.Toolbar.TextButton"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/chassis_toolbar_menu_item_margin"
diff --git a/car-chassis-lib/res/values/styles.xml b/car-chassis-lib/res/values/styles.xml
index b9ea23a..83b0e96 100644
--- a/car-chassis-lib/res/values/styles.xml
+++ b/car-chassis-lib/res/values/styles.xml
@@ -16,92 +16,41 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Styles for chassis tab view -->
- <style name="ChassisTabItemText">
- <item name="android:textAppearance">@style/TextAppearance.Body3</item>
- <item name="android:textColor">@color/chassis_tab_item_selector</item>
- <item name="android:layout_width">@dimen/chassis_tab_text_width</item>
- <item name="android:layout_height">wrap_content</item>
- <item name="android:singleLine">true</item>
- <item name="android:gravity">center</item>
- </style>
- <style name="ChassisTabItemIcon">
- <item name="android:layout_width">@dimen/chassis_tab_icon_width</item>
- <item name="android:layout_height">@dimen/chassis_tab_icon_height</item>
- <item name="android:scaleType">fitCenter</item>
- <item name="android:tint">@color/chassis_tab_item_selector</item>
- <item name="android:tintMode">src_in</item>
- </style>
+ <style name="Widget.Chassis" parent="android:Widget.DeviceDefault"/>
- <style name="ChassisTabItemBackground">
- <item name="android:background">?android:attr/selectableItemBackground</item>
- </style>
+ <style name="Widget.Chassis.Toolbar"/>
- <style name="ChassisToolbarTitleStyle">
- <item name="android:textAppearance">@style/TextAppearance.Body1</item>
- <item name="android:singleLine">true</item>
- <item name="android:layout_marginStart">@dimen/chassis_toolbar_title_margin_start</item>
- </style>
-
- <style name="ChassisToolbarContainerStyle"/>
-
- <style name="ChassisToolbarRowSeparatorStyle">
- <item name="android:layout_width">match_parent</item>
- <!-- can't use 0dp or the constraintlayout effect kicks in -->
- <item name="android:layout_height">0.01dp</item>
- </style>
-
- <style name="ChassisToolbarBottomStyle">
- <item name="android:layout_width">match_parent</item>
- <!-- can't use 0dp or the constraintlayout effect kicks in -->
- <item name="android:layout_height">0.01dp</item>
- </style>
-
- <style name="ChassisToolbarNavIconContainerStyle">
- <item name="android:layout_width">@dimen/chassis_toolbar_nav_button_width</item>
- <item name="android:layout_height">0dp</item>
- <item name="android:background">?android:attr/selectableItemBackground</item>
- </style>
-
- <style name="ChassisToolbarNavIconStyle">
- <item name="android:layout_width">@dimen/chassis_toolbar_icon_size</item>
- <item name="android:layout_height">@dimen/chassis_toolbar_icon_size</item>
- <item name="android:layout_gravity">center</item>
+ <style name="Widget.Chassis.Toolbar.NavIcon">
<item name="android:tint">@color/chassis_primary_text_color</item>
<item name="android:src">@drawable/chassis_icon_arrow_back</item>
- <item name="android:scaleType">fitXY</item>
</style>
- <style name="ChassisToolbarLogoStyle">
- <item name="android:layout_width">@dimen/chassis_toolbar_icon_size</item>
- <item name="android:layout_height">@dimen/chassis_toolbar_icon_size</item>
- <item name="android:layout_gravity">center</item>
- <item name="android:scaleType">fitXY</item>
- </style>
-
- <style name="ChassisToolbarTextButtonStyle">
+ <style name="Widget.Chassis.Toolbar.TextButton">
<item name="android:background">?android:attr/selectableItemBackground</item>
<item name="android:textColor">?android:attr/colorAccent</item>
- <item name="android:textAppearance">@style/TextAppearance.Body3</item>
+ <item name="android:textAppearance">@style/TextAppearance.Chassis.Widget.Toolbar.Tab</item>
</style>
- <style name="TextAppearance">
- <item name="android:fontFamily">roboto-regular</item>
- <item name="android:textColor">@color/chassis_primary_text_color</item>
+ <style name="Widget.Chassis.PagedRecyclerView"/>
+ <style name="Widget.Chassis.PagedRecyclerView.NestedRecyclerView"/>
+
+ <style name="TextAppearance.Chassis" parent="android:TextAppearance.DeviceDefault">
+ <item name="android:textColor">?android:attr/textColorPrimary</item>
</style>
- <style name="TextAppearance.Body1" parent="TextAppearance">
+ <style name="TextAppearance.Chassis.Widget"/>
+
+ <style name="TextAppearance.Chassis.Widget.Toolbar"/>
+
+ <style name="TextAppearance.Chassis.Widget.Toolbar.Title">
+ <item name="android:singleLine">true</item>
<item name="android:textSize">32sp</item>
<item name="android:letterSpacing">@dimen/chassis_letter_spacing_body1</item>
</style>
- <style name="TextAppearance.Body3" parent="TextAppearance">
+ <style name="TextAppearance.Chassis.Widget.Toolbar.Tab">
<item name="android:textSize">24sp</item>
<item name="android:letterSpacing">@dimen/chassis_letter_spacing_body3</item>
</style>
-
- <style name="PagedRecyclerView">
- </style>
- <style name="PagedRecyclerView.NestedRecyclerView">
- </style>
</resources>
diff --git a/car-chassis-lib/src/com/android/car/chassis/pagedrecyclerview/PagedRecyclerView.java b/car-chassis-lib/src/com/android/car/chassis/pagedrecyclerview/PagedRecyclerView.java
index 3296caa..1de483b 100644
--- a/car-chassis-lib/src/com/android/car/chassis/pagedrecyclerview/PagedRecyclerView.java
+++ b/car-chassis-lib/src/com/android/car/chassis/pagedrecyclerview/PagedRecyclerView.java
@@ -264,7 +264,7 @@
TypedArray a =
context.obtainStyledAttributes(
attrs, R.styleable.PagedRecyclerView, defStyleAttr,
- R.style.PagedRecyclerView);
+ R.style.Widget_Chassis_PagedRecyclerView);
mScrollBarEnabled = context.getResources().getBoolean(R.bool.chassis_scrollbar_enable);
mFullyInitialized = false;
@@ -276,7 +276,8 @@
}
mNestedRecyclerView =
- new RecyclerView(context, attrs, R.style.PagedRecyclerView_NestedRecyclerView);
+ new RecyclerView(context, attrs,
+ R.style.Widget_Chassis_PagedRecyclerView_NestedRecyclerView);
mScrollBarPaddingStart =
context.getResources().getDimension(R.dimen.chassis_scrollbar_padding_start);
diff --git a/car-chassis-lib/src/com/android/car/chassis/toolbar/TabLayout.java b/car-chassis-lib/src/com/android/car/chassis/toolbar/TabLayout.java
index 24ec5d7..005e598 100644
--- a/car-chassis-lib/src/com/android/car/chassis/toolbar/TabLayout.java
+++ b/car-chassis-lib/src/com/android/car/chassis/toolbar/TabLayout.java
@@ -16,11 +16,11 @@
package com.android.car.chassis.toolbar;
import android.content.Context;
-import android.content.res.TypedArray;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.util.ArraySet;
import android.util.AttributeSet;
+import android.util.TypedValue;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
@@ -56,7 +56,6 @@
* can be customized.
*
* <p>Touch feedback is using @android:attr/selectableItemBackground.
- *
*/
public class TabLayout extends LinearLayout {
@@ -65,13 +64,16 @@
*/
public interface Listener {
/** Callback triggered when a tab is selected. */
- default void onTabSelected(Tab tab) {}
+ default void onTabSelected(Tab tab) {
+ }
/** Callback triggered when a tab is unselected. */
- default void onTabUnselected(Tab tab) {}
+ default void onTabUnselected(Tab tab) {
+ }
/** Callback triggered when a tab is reselected. */
- default void onTabReselected(Tab tab) {}
+ default void onTabReselected(Tab tab) {
+ }
}
// View attributes
@@ -187,11 +189,10 @@
tabItemView.setOrientation(LinearLayout.VERTICAL);
tabItemView.setGravity(Gravity.CENTER);
tabItemView.setPadding(mTabPaddingX, 0, mTabPaddingX, 0);
- TypedArray ta = getContext().obtainStyledAttributes(R.style.ChassisTabItemBackground,
- new int[]{android.R.attr.background});
- Drawable backgroundDrawable = ta.getDrawable(0);
- ta.recycle();
- tabItemView.setBackground(backgroundDrawable);
+ TypedValue tv = new TypedValue();
+ getContext().getTheme().resolveAttribute(android.R.attr.selectableItemBackground,
+ tv, /* resolveRefs= */ true);
+ tabItemView.setBackgroundResource(tv.resourceId);
return tabItemView;
}